我有一个类似的文件:
@HWI
ABCDE
+
@HWI7
EFSA
+
???=AF
GTEY@JF
GVTAWM
我想只保留字符串(因此删除包含符号的所有内容)
我试过了:
import numpy as np
arr = np.genfromtxt(f, dtype=str)
for line in np.nditer(arr):
if np.core.defchararray.isupper(line) and not '@?=;?+' in line:
print line
但它给出了:
@HWI
ABCDE
@HWI7
EFSA
???=AF
GTEY@JF
GVTAWM
我期待着:
ABCDE
EFSA
GVTAWM
我想使用numpy而不是像regex或类似的命令。
答案 0 :(得分:1)
这是我的解决方案:
import numpy as np
arr = np.genfromtxt('text.txt', dtype=str)
test = np.core.defchararray.isalpha(arr) #Create a mask : True = only str and False = not only str
print arr[test] #Use the mask on arr and it will print only good values
不要将if
与numpy一起使用!你有索引来做到这一点;)
我明白了:
['ABCDE' 'EFSA' 'GVTAWM']
答案 1 :(得分:0)
还有一个isalpha()和isnumeric()函数也是numpy。可以阅读here。
没有numpy,你可以试试这个正则表达式:
re.sub(r'[^\w]', ' ', s)
其中s
是您的字符串,[^\w]
将匹配任何不是字母数字或下划线的内容