Python 3.6 - 从文件中读取编码文本并转换为字符串
Python 3.6 - Read encoded text from file and convert to string
希望有人能帮助我解决以下问题。它可能并不太复杂,但我一直无法弄清楚。我的 "output.txt" 文件是用以下内容创建的:
f = open('output.txt', 'w')
print(tweet['text'].encode('utf-8'))
print(tweet['created_at'][0:19].encode('utf-8'))
print(tweet['user']['name'].encode('utf-8'))
f.close()
如果我不对它进行编码以写入文件,它会给我错误。所以 "output" 包含 3 行 utf-8 编码输出:
b'testtesttest'
b'line2test'
b'\xca\x83\xc9\x94n ke\xc9\xaan'
在 "main.py" 中,我试图将其转换回字符串:
f = open("output.txt", "r", encoding="utf-8")
text = f.read()
print(text)
f.close()
遗憾的是,b'' - 格式仍未删除。我还需要解码吗?如果可能的话,我想保留 3 行结构。
对于新手问题,我深表歉意,这是我在 SO 上的第一个问题 :)
在此先感谢您!
不要在打开文件时指定编码,而是在阅读时使用它进行解码。
f = open("output.txt", "rb")
text = f.read().decode(encoding="utf-8")
print(text)
f.close()
如果 b
和引号 '
在您的文件中,这意味着您的文件有问题。有人可能做了 write(print(line))
而不是 write(line)
。现在要对其进行解码,您可以使用 literal_eval
。否则@m_callens 答案应该没问题。
import ast
with open("b.txt", "r") as f:
text = [ast.literal_eval(line) for line in f]
for l in text:
print(l.decode('utf-8'))
# testtesttest
# line2test
# ʃɔn keɪn
在回答我问题的人的帮助下,我已经能够让它工作了。解决方案是改变写入文件的方式:
tweet = json.loads(data)
tweet_text = tweet['text'] # content of the tweet
tweet_created_at = tweet['created_at'][0:19] # tweet created at
tweet_user = tweet['user']['name'] # tweet created by
with open('output.txt', 'w', encoding='utf-8') as f:
f.write(tweet_text + '\n')
f.write(tweet_created_at+ '\n')
f.write(tweet_user+ '\n')
然后这样读:
f = open("output.txt", "r", encoding='utf-8')
tweettext = f.read()
print(text)
f.close()
希望有人能帮助我解决以下问题。它可能并不太复杂,但我一直无法弄清楚。我的 "output.txt" 文件是用以下内容创建的:
f = open('output.txt', 'w')
print(tweet['text'].encode('utf-8'))
print(tweet['created_at'][0:19].encode('utf-8'))
print(tweet['user']['name'].encode('utf-8'))
f.close()
如果我不对它进行编码以写入文件,它会给我错误。所以 "output" 包含 3 行 utf-8 编码输出:
b'testtesttest'
b'line2test'
b'\xca\x83\xc9\x94n ke\xc9\xaan'
在 "main.py" 中,我试图将其转换回字符串:
f = open("output.txt", "r", encoding="utf-8")
text = f.read()
print(text)
f.close()
遗憾的是,b'' - 格式仍未删除。我还需要解码吗?如果可能的话,我想保留 3 行结构。 对于新手问题,我深表歉意,这是我在 SO 上的第一个问题 :)
在此先感谢您!
不要在打开文件时指定编码,而是在阅读时使用它进行解码。
f = open("output.txt", "rb")
text = f.read().decode(encoding="utf-8")
print(text)
f.close()
如果 b
和引号 '
在您的文件中,这意味着您的文件有问题。有人可能做了 write(print(line))
而不是 write(line)
。现在要对其进行解码,您可以使用 literal_eval
。否则@m_callens 答案应该没问题。
import ast
with open("b.txt", "r") as f:
text = [ast.literal_eval(line) for line in f]
for l in text:
print(l.decode('utf-8'))
# testtesttest
# line2test
# ʃɔn keɪn
在回答我问题的人的帮助下,我已经能够让它工作了。解决方案是改变写入文件的方式:
tweet = json.loads(data)
tweet_text = tweet['text'] # content of the tweet
tweet_created_at = tweet['created_at'][0:19] # tweet created at
tweet_user = tweet['user']['name'] # tweet created by
with open('output.txt', 'w', encoding='utf-8') as f:
f.write(tweet_text + '\n')
f.write(tweet_created_at+ '\n')
f.write(tweet_user+ '\n')
然后这样读:
f = open("output.txt", "r", encoding='utf-8')
tweettext = f.read()
print(text)
f.close()