从字符串中删除符号

时间:2016-07-19 14:08:42

标签: python numpy

我有一个类似的文件:

@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或类似的命令。

2 个答案:

答案 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)

W / numpy:

还有一个isalpha()和isnumeric()函数也是numpy。可以阅读here

没有numpy,你可以试试这个正则表达式:

re.sub(r'[^\w]', ' ', s)

其中s是您的字符串,[^\w]将匹配任何不是字母数字或下划线的内容

Stackoverflow

上的示例