我有一个文本文件(.txt),可以是制表符分隔格式或管道分隔格式,我需要将其转换为CSV文件格式.我正在使用python 2.6.任何人都可以建议我如何识别文本文件中的分隔符,读取数据然后将其转换为逗号分隔文件.
提前致谢
小智 6
我担心你不知道它是什么就无法识别分隔符.CSV的问题在于引用ESR:
Microsoft的CSV版本是如何不设计文本文件格式的教科书示例.
如果分隔符可以出现在字段中,则需要以某种方式对其进行转义.在不知道如何完成转义的情况下,自动识别它很困难.可以使用UNIX方式进行转义,使用反斜杠'\'或Microsoft方式,使用引号,然后必须转义.这不是一项微不足道的任务.
因此,我的建议是从生成您要转换的文件的人那里获取完整的文档.然后,您可以使用其他答案或某些变体中建议的方法之一.
编辑:
Python提供的csv.Sniffer可以帮助您推断DSV的格式.如果您的输入如下所示(请注意第二行第一个字段中的引用分隔符):
a|b|c
"a|b"|c|d
foo|"bar|baz"|qux
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
import csv
csvfile = open("csvfile.csv")
dialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
reader = csv.DictReader(csvfile, dialect=dialect)
for row in reader:
print row,
# => {'a': 'a|b', 'c': 'd', 'b': 'c'} {'a': 'foo', 'c': 'qux', 'b': 'bar|baz'}
# write records using other dialect
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9921 次 |
| 最近记录: |