我有一个看起来像这样的csv文件:请注意,没有引号,标签(\ t)是分隔符,标题和实际内容之间有一个空行.
Facility No Testing No Name Age
252 2351 Jackrabbit, Jazz 15
345 257 Aardvark, Ethel 41
Run Code Online (Sandbox Code Playgroud)
我想我已经尝试了几乎所有可能的想法和参数组合
f = open('/tmp/test', 'r')
csvFile = f.read()
reader = csv.DictReader(csvFile, delimiter='\t', quoting=csv.QUOTE_NONE)
print reader.fieldnames
Run Code Online (Sandbox Code Playgroud)
印刷的结果是:
['F']
Run Code Online (Sandbox Code Playgroud)
我怎样才能将其解析为可以解析的数据库?将它放入字典会很有帮助.
eum*_*iro 28
你是什么csvFile?它是一个表示以"F"开头的文件名的字符串吗?
csv.DictReader 需要一个打开的文件对象,而不是文件名.
尝试:
with open(csvFile, 'rb') as f:
reader = csv.DictReader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
print reader.fieldnames
Run Code Online (Sandbox Code Playgroud)
编辑
如果您csvFile是包含整个数据的字符串,则必须将其转换为a StringIO(因为csv只能访问类似文件的对象,而不能访问字符串).
尝试:
from cStringIO import StringIO
# csvFile = 'Facility No\tTesting No\tName\tAge\n\n252\t2351\tJackrabbit, Jazz\t15\n345\t257\tAardvark, Ethel\t41\n'
reader = csv.DictReader(StringIO(csvFile), delimiter='\t', quoting=csv.QUOTE_NONE)
print reader.fieldnames
Run Code Online (Sandbox Code Playgroud)
或者,如果您编辑的问题打开并读取文件:
with open('/tmp/test', 'rb') as f:
reader = csv.DictReader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
print reader.fieldnames
Run Code Online (Sandbox Code Playgroud)
这适合我.
| 归档时间: |
|
| 查看次数: |
27601 次 |
| 最近记录: |