我正在从网站上获取NLP到某些数据。这里我有一个爬行数据集,它是一个标记化列表。我只想处理这个列表中的单词而不是其他数字。所以我已经搜索了其他类似的问题,并且已经尝试过那些已经回答的问题,但是在我的情况下它不起作用。下图是iPython笔记本的屏幕截图,您可以在列表中看到一些数字。
我试过以下那些。
#(1)
no_integers = [x for x in tokens if not (x.isdigit() or x[0] == '-' and x[1:].isdigit())]
#(2)
is_integer = lambda s: s.isdigit() or (x[0] == '-' and x[1:].isdigit())
no_integers = filter(is_integer, tokens)
#(3)
def int_filter( tokens ):
for v in tokens:
try:
int(v)
continue # Skip these
except ValueError:
yield v # Keep these
list( int_filter( tokens ))
我没有得到什么问题。没有编译错误。为了弄清楚是否有效,我试图比较之前和之后的'len(令牌)'。但是,没有任何改变。
答案 0 :(得分:0)
您可以通过这种方式删除所有整数/数字/浮点数的单词:
tokens = "I like 55 donuts with glaze".split()
no_integers = [token for token in tokens if not token.isdigit()]
print(no_integers)
如果您想删除底片和小数:
tokens = "I like 55 95.5 donuts with glaze".split()
no_integers = [token for token in tokens if not all(char.isdigit() or char == '.' or char == '-' for char in token)]
print(no_integers)
token ="55"
print (all(char.isdigit() for char in token))
答案 1 :(得分:0)
您可能想尝试regex(正则表达式)吗?
import re
x = 'I was born in the year 1997'
re.sub(r'\d','',x)
如果x中有一个'\ d'表示数字,则您将用''代替一个数字