【发布时间】:2023-03-20 07:44:01
【问题描述】:
使用 python,我正在尝试获取一个文本文件,然后创建一个长长的单词列表(单词按照它们在文档中出现的顺序排列)。
到目前为止,我已经遍历了每一行,然后基本上只是将单词添加到长列表中。
它应该将每个单词小写,并删除它找到的任何标点符号。
wordstory=[a.lower().strip(string.punctuation) for b in [line.split() for line in open('alice.txt')] for a in b]
.strip(string.punctuation) 似乎无法识别某些标点符号以进行删除,此外,在某些情况下,标点符号会转换为奇数代码。
我最终会遇到这样的情况,\xe2\x80\x94 根本不应该在那里。
..
'she',
'spoke\xe2\x80\x94fancy',
'curtseying',
..
此外,当双引号旁边出现撇号时,.strip(string.punctuation) 不会删除撇号。我最终得到:
..
'she',
"couldn't",
'answer',
..
有人可以提供一些有用的代码,或者给我指出一个可以帮助我理解正在发生的事情的资源吗?
【问题讨论】:
-
你能提供一个示例文本文件和你到目前为止尝试过的代码吗?
-
听起来您正在尝试读取 unicode 文件?
-
我敢打赌,您的源文档中有多字节 unicode 标点符号。
-
请注意
str.strip只删除字符串开头和结尾的字符,因此parents'变为parents但parent's根本没有改变