TypeError:Python中应为字符缓冲区对象

2024-04-26 04:03:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道为什么我不能将此document写入文件:

document=['', 'feeling frisky cool cat hits join us', 'askjoe app add music videos free today saintkittsandnevis', 'give dog flea bath midnight greeeeat smells like dawn', 'cat finds flash drive spent weeks looking', 'downside cat dude means can recognize nice smell pee second', 'louis pine apple make life brighter like star please follow me', 'gonna need nice cup coffee morning', 'gonna need nice cup coffee morning', 'iphone gives warning dies smh']

以下是写入文件的代码:

^{pr2}$

我得到的错误是:

Traceback (most recent call last):
  File "test.py", line 85, in <module>
    cleaned_tweet_file.write(document)
TypeError: expected a character buffer object

Tags: 文件needdocumentlikecatcupcoffeenice
2条回答

解决方案如下,添加str

with open("cleaned_tweet.txt", "w") as cleaned_tweet_file:
    cleaned_tweet_file.write(str(document))

方法^{}接受str而不是list对象作为参数。这就是您的^{}的原因,并将其包装在一个str()调用中,只需就可以得到list对象{}的字符串表示,而不是列表中的文档本身。在

通过使用:

with open("cleaned_tweet.txt", "w") as cleaned_tweet_file:
    cleaned_tweet_file.write(str(document))

您将把list对象作为字符串写入到文件中,因此有一个大字符串:

^{pr2}$

会出席的。逻辑上不是你想要的。在


您可以使用与字符串的list一起工作的listfor结合使用的list或{}与{}循环结合使用的list转换:

使用writelines()

with open("cleaned_tweet.txt", "w") as cleaned_tweet_file:
    cleaned_tweet_file.writelines(document)

这里不需要循环或手动转换。在

使用write和一个简单的for循环:

with open("cleaned_tweet.txt", "w") as cleaned_tweet_file:
    for tweet in document:
        cleaned_tweet_file.write(tweet)

这也有同样的效果。它的主要优点是它允许您每行指定额外的内容;如果您需要为每条tweet添加新行和前缀,可以显式地添加它cleaned_tweet_file.write("Tweet: " + tweet + "\n")。在

相关问题 更多 >