我刚刚开始使用NLTK,我不太明白如何从文本中获取单词列表.如果我使用nltk.word_tokenize(),我会得到一个单词和标点符号列表.我只需要单词代替.我怎样才能摆脱标点符号?也word_tokenize没有多话来:点加到硬道理.
我用来跑
$s =~ s/[^[:print:]]//g;
Run Code Online (Sandbox Code Playgroud)
在Perl上摆脱不可打印的字符.
在Python中没有POSIX正则表达式类,我不能写[:print:]让它意味着我想要的东西.我知道在Python中无法检测字符是否可打印.
你会怎么做?
编辑:它也必须支持Unicode字符.string.printable方式很乐意将它们从输出中剥离出来.对于任何unicode字符,curses.ascii.isprint都将返回false.
加入清单:
>>> ''.join([ str(_) for _ in xrange(10) ])
'0123456789'
Run Code Online (Sandbox Code Playgroud)
join 必须采取迭代.
显然,join这个论点是[ str(_) for _ in xrange(10) ],这是一个列表理解.
看这个:
>>>''.join( str(_) for _ in xrange(10) )
'0123456789'
Run Code Online (Sandbox Code Playgroud)
现在,join这个论点只是str(_) for _ in xrange(10),不[],但结果是一样的.
为什么?是否str(_) for _ in xrange(10)也会产生一个列表或一个可迭代?
我想使用.translate()方法从文本文件中删除所有标点符号.它似乎在Python 2.x下运行良好,但在Python 3.4下似乎没有做任何事情.
我的代码如下,输出与输入文本相同.
import string
fhand = open("Hemingway.txt")
for fline in fhand:
fline = fline.rstrip()
print(fline.translate(string.punctuation))
Run Code Online (Sandbox Code Playgroud) 对于这个问题的30秒内希望得到答案,我特意寻找C#
但在一般情况下,删除任何语言标点符号的最佳方法是什么?
我应补充一点:理想情况下,解决方案不需要您枚举所有可能的标点符号.
是否有包含我们可能经常遇到的所有标点符号的列表或库?
通常我使用string.punctuation,但其中不包含一些标点符号,例如:
>>> "'" in string.punctuation
True
>>> "’" in string.punctuation
False
Run Code Online (Sandbox Code Playgroud) 我有一个函数,从字符串列表中删除标点符号:
def strip_punctuation(input):
x = 0
for word in input:
input[x] = re.sub(r'[^A-Za-z0-9 ]', "", input[x])
x += 1
return input
Run Code Online (Sandbox Code Playgroud)
我最近修改了我的脚本以使用Unicode字符串,所以我可以处理其他非西方字符.当遇到这些特殊字符并且只返回空的Unicode字符串时,此函数会中断.如何从Unicode格式的字符串中可靠地删除标点符号?
我有这个代码从正则表达式字符串中删除所有标点符号:
import regex as re
re.sub(ur"\p{P}+", "", txt)
Run Code Online (Sandbox Code Playgroud)
如何更改它以允许连字符?如果你能解释一下你是如何做到的,那就太好了.我明白在这里,如果我错了,请纠正我,在标点后加上任何东西.
我想用Python中的字符串中的"" 替换(而不是删除)所有标点字符.
是否有以下口味的效果?
text = text.translate(string.maketrans("",""), string.punctuation)
Run Code Online (Sandbox Code Playgroud) 假设我问用户原始输入,他们说:"这是一条消息." 如果该原始输入包含单词"message",则它将在此之后执行操作.我能看出这是怎么做到的吗?