就地文件编码
Inplace file encoding
我正在尝试从包含大量数据的 csv 文件中删除重复项。删除工作按预期进行,但我似乎无法弄清楚如何在就地删除时更改编码。谷歌搜索答案没有帮助。你们有什么建议吗?
这是我的代码:
seen = set()
for line in fileinput.FileInput('Dupes.csv', inplace=1):
if line in seen: continue # skip duplicated line
seen.add(line)
print(line, end='')
这个脚本很适合我。
import fileinput
import sys
encoding = 'utf8'
end = '\n'
seen = set()
dupeCount = 0
for line in fileinput.FileInput('Dupes.csv', inplace=1, mode='rU'):
stripped = line.strip()
if stripped in seen:
dupeCount += 1
continue
seen.add(stripped)
# Sends the output in the right representation
sys.stdout.buffer.write(stripped.encode(encoding) + end.encode(encoding))
print('Removed %d dupes' % dupeCount)
想法是用正确的模式读取文件,然后以正确的编码通过 stdout 写入文件,这是通过以 utf8 的字节表示形式写入所有内容来完成的。
经过口音测试,似乎有效。
我正在尝试从包含大量数据的 csv 文件中删除重复项。删除工作按预期进行,但我似乎无法弄清楚如何在就地删除时更改编码。谷歌搜索答案没有帮助。你们有什么建议吗?
这是我的代码:
seen = set()
for line in fileinput.FileInput('Dupes.csv', inplace=1):
if line in seen: continue # skip duplicated line
seen.add(line)
print(line, end='')
这个脚本很适合我。
import fileinput
import sys
encoding = 'utf8'
end = '\n'
seen = set()
dupeCount = 0
for line in fileinput.FileInput('Dupes.csv', inplace=1, mode='rU'):
stripped = line.strip()
if stripped in seen:
dupeCount += 1
continue
seen.add(stripped)
# Sends the output in the right representation
sys.stdout.buffer.write(stripped.encode(encoding) + end.encode(encoding))
print('Removed %d dupes' % dupeCount)
想法是用正确的模式读取文件,然后以正确的编码通过 stdout 写入文件,这是通过以 utf8 的字节表示形式写入所有内容来完成的。
经过口音测试,似乎有效。