提问人:uberts64 提问时间:6/15/2023 最后编辑:uberts64 更新时间:6/15/2023 访问量:80
使用 utf-8 编码写入 csv 时遇到问题
Trouble with writing to a csv using utf-8 encoding
问:
我正在尝试分析一些 facebook messenger 数据,但在 utf-8 编码方面遇到了问题。
import os
import json
import datetime
from tqdm import tqdm
import csv
from datetime import datetime
directory = "facebook-100071636101603/messages/inbox"
folders = os.listdir(directory)
if ".DS_Store" in folders:
folders.remove(".DS_Store")
for folder in tqdm(folders):
print(folder)
for filename in os.listdir(os.path.join(directory,folder)):
if filename.startswith("message"):
data = json.load(open(os.path.join(directory,folder,filename), "r"))
for message in data["messages"]:
try:
date = datetime.fromtimestamp(message["timestamp_ms"] / 1000).strftime("%Y-%m-%d %H:%M:%S")
sender = message["sender_name"]
content = message["content"]
with open('output.csv', 'w', encoding="utf-8") as csv_file:
writer = csv.writer(csv_file)
writer.writerow([date,sender,content])
except KeyError:
pass
此脚本有效,但输出 csv 不显示带重音的字符。
我对此非常了解,所以我没有尝试很多。我阅读了 Python csv 文档并找到了这段话:
由于 open() 用于打开 CSV 文件进行读取,因此默认情况下,该文件将使用系统默认编码解码为 unicode(请参阅 locale.getencoding())。若要使用其他编码对文件进行解码,请使用 open 的编码参数:
导入 CSV 使用 open('some.csv', newline='', encoding='utf-8') 作为 f: 读者 = csv.reader(f) 对于阅读器中的行: print(行)
但这似乎行不通。
编辑:这是我得到的输出,但它应该是 Jørn 而不是 Jà ̧rn 和 quête,而不是 quête。
答:
0赞
Bob The Builder
6/15/2023
#1
尝试添加到此行:encoding="utf-8
json.load(open(os.path.join(directory,folder,filename), "r", encoding="utf-8"))
这将确保您导入的每个文件都采用 utf-8 编码格式
编辑:
您需要使用 .此包将修复损坏的编码。
通过编写以下内容来更改并使用 ftfy 修复编码:pip install ftfy
sender
content
import ftfy
# Your other code
sender = message["sender_name"]
content = message["content"]
sender = ftfy.fix_text(sender)
content = ftfy.fix_text(content)
您也可以用于任何其他损坏的编码。ftfy.fix_text(string)
评论
0赞
uberts64
6/15/2023
谢谢你的回答!可悲的是,它并不能解决我的问题,我仍然在没有口音的情况下获得相同的输出。
0赞
Bob The Builder
6/15/2023
您能否展示输出是什么以及预期输出是什么,以便更好地了解问题
0赞
uberts64
6/15/2023
我已经编辑了问题以包含输出。
0赞
Bob The Builder
6/15/2023
@uberts64我改变了我的答案,这应该可以解决您的问题(如果有效,请记住点赞并接受答案!
0赞
uberts64
6/15/2023
就是这样!非常感谢。
评论