【问题标题】:remove symbols from string从字符串中删除符号
【发布时间】:2016-11-22 11:44:45
【问题描述】:

我有一个类似的文件:

@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,而不是像正则表达式或类似的命令。

【问题讨论】:

  • @AlexRosenfeld:你好,我想用 numpy 来做这个。
  • 感谢您将此添加到问题中
  • 它也会有小写字母吗?这些是有效的吗?
  • @Divakar:可能有,但无效。

标签: python numpy


【解决方案1】:

W/numpy:

numpy 也有 isalpha() 和 isumeric() 函数。他们可以阅读here

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

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

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

Stackoverflow上的一个例子

【讨论】:

  • 我正在使用 numpy。我不想使用正则表达式
  • 好的,你应该在问题中指定要求。
【解决方案2】:

这是我的解决方案:

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']

【讨论】:

    猜你喜欢
    • 2017-03-19
    • 2013-05-19
    • 2012-06-25
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 2013-07-05
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多