【发布时间】:2019-06-22 00:53:27
【问题描述】:
我对 python 很陌生。对于这个任务,我正在尝试导入一个文本文件,将 和 添加到 id,并从文本中删除标点符号。我试过这个方法How to strip punctuation from a text file。
import string
def readFile():
translate_table = dict((ord(char), None) for char in string.punctuation)
with open('out_file.txt', 'w') as out_file:
with open('moviereview.txt') as file:
for line in file:
line = ' '.join(line.split(' '))
line = line.translate(translate_table)
out_file.write("<s>" + line.rstrip('\n') + "</s>" + '\n')
return out_file
但是,我收到一条错误消息:
TypeError: 应为字符串或其他字符缓冲区对象
我的想法是,在我拆分并加入行后,我得到了一个字符串列表,所以我不能使用 str.translate() 来处理它。但似乎其他人都有相同的东西并且它有效, 前任。 https://appliedmachinelearning.blog/2017/04/30/language-identification-from-texts-using-bi-gram-model-pythonnltk/ 在第 13 行的示例代码中。
所以我真的很困惑,有人可以帮忙吗?谢谢!
【问题讨论】:
-
使用
" ".join(line.split(" "))毫无用处。你最终得到的正是你开始的东西。另外,错误发生在哪一行?我也认为这只是一个复制问题,但这是一些非常奇怪的缩进。 -
@Recessive 错误发生在“line = line.translate(translate_table)”这一行
-
这是 Python 2 还是 Python 3?如果是 Python 2,除非您使用
io.open打开文件,而不是普通的内置open,否则预计会失败。
标签: python python-2.7 io typeerror python-2.x