【发布时间】:2018-07-30 23:03:00
【问题描述】:
这是我第一次在这里发帖,我对在工作中使用 python 很陌生。我已经用谷歌搜索并尽力做到了这一点。
总结:
我正在尝试获取用户名和文件名的文件并删除所有非 utf8 字符。在 40k 左右的文件名记录列表中,有 utf8、utf16 和其他语言编码的混合。
问题: 我无法让 python 使用用户名和非 utf8 文件名正确格式化 csv。我无法让它为每条记录及其对应的用户创建一个新的选项卡和行。我的打印语句完全按照我需要的样子工作——它与我所看到的完全分开。我只是想不通将两列都写入csv。我需要 Sender_Email 列来保留我的主键以供以后加入。
这是我的源 csv 的样子:
sender_email, file_name
test@test.com, utf16filename.xlxs
tester@test.com, utf16filename.xlxs
mrstest@test.com, utf8filename1.pptx
mctestertester@test.com, utf8filename2.pdf
mrstest@test.com, utf8filename3.docx
mctesterson@test.com, utf8filename4.docx
mrstest@test.com, utf8filename5.docx
期望的输出:撕掉所有非 utf8 或 ascii 字符
sender_email, file_name
mrstest@test.com, utf8filename1.pptx
mctestertester@test.com, utf8filename2.pdf
mrstest@test.com, utf8filename3.docx
mctesterson@test.com, utf8filename4.docx
mrstest@test.com, utf8filename5.docx
到目前为止我所拥有的 - print 语句正是我所需要的并且它有效。我在文件名输出中的所有结果都是 utf8,当我在终端中查看它们时,我可以通过抽查看到它们。当我只编写没有 Sender_Email 列的 file_names 列时,该代码也可以工作。如果我只写 file_name 列,我只能让 csv 正确格式化,但是我会丢失我的主键(sender_email)。
import csv
with open ('MixedUTF8andUTF16FileNamesAndSenderEmail.csv', 'r') as inFile:
readFile = csv.reader(inFile)
for row in readFile:
try:
sender_email = row[0]
file_names = row[1].decode('ascii')
print sender_email+'\t'+file_names
with open('asciionlycharacters.csv', 'a') as finalFile:
finalFile.writerows(sender_email+'\t'+file_names)
except:
pass
当我在 excel 中打开 csv 时,它的确切样子
sender_email file_name
utf8filename1.pptx
utf8filename2.pdf
utf8filename3.docx
mctestertester@test.comutf8filename4.docx
mrstest@test.comutf8filename5.docx
【问题讨论】:
标签: python csv utf-8 export-to-excel utf-16