我有一个.txt文件,我想“清理”咒骂词,所以我写了一个程序,检查单词列表的每个位置,如果单词出现在列表中的任何位置可靠的单词,它用var.remove(arg)
删除它。它工作正常,列表很干净,但不能写入任何文件。
wordlist
是清单。
newlist = open("lists.txt", "w")
newlist.write(wordlist)
newlist.close()
这会返回此错误:
newlist.write(wordlist)
TypeError: expected a string or other character buffer object
我猜这是因为我试图写一个带有变量或列表的文件,但实际上没有替代品;列表中有3526个项目。
任何想法为什么它不能写入带有列表变量的文件?
注意:lists.txt不存在,它是由写入模式创建的。
write
写了一个字符串。你不能写一个list
变量,因为,即使对于人类来说,很明显它应该用单词之间的空格或分号书写,计算机没有空闲的做出这样的假设,并且应该提供精确的数据(字节)明智的)你想写。
因此,您需要将此列表转换为字符串 - 显式 - 然后将其写入文件。为了这个目标,
newlist.write('\n'.join(wordlist))
就足够了(并提供一个文件,其中每行包含一个单词)。
str(wordlist)
转换列表(将返回类似['hi', 'there']
的内容)并编写它将起作用(并允许通过eval
方法检索),但考虑到长列表,这将是非常昂贵的空间使用(每个字增加大约4个字节) )并且可能需要更多时间。