使用Python读取非严格CSV-Fi

2024-04-20 12:32:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我的CSV文件是here

以下是我的数据格式:

1763212493,zhangniuzhang,male,,yes,(this is chinese comma,not in english)i do,hubei wuhan,1763212493,69,86,316,,,tp2.sinaimg.cn/1763212493/50/5613831962/1,0,"free,house,trip,80","1863415082,1752861352"

我的密码是:

import csv

with open("test.csv", "r") as f:
    reader = csv.DictReader(f)
    for row in reader:
        print row

很简单,但我有以下几点:

{'mn': '316', 'ci': '', 'sx': 'male', 'ei': '', 'ad': 'hubei;"wuhan', 'vi': '', 'fui;': 'house', 'de': 'yes\xef\xbc\x8ci do', 'iu': 'tp2.sinaimg.cn/1763212493/50/5613831962/1', 'an': '69', 'un': '1763212493', 'iv': '0', 'sn': 'zhangniuzhang', None: ['trip', '80""', '1863415082', '1752861352"""'], 'tg': 'free', '_id': '1763212493', 'fn': '86'}
{'mn': '1104', 'ci': '', 'sx': 'femail', 'ei': '', 'ad': 'jilin;"changchun', 'vi': '', 'fui;': 'art', 'de': '', 'iu': 'tp2.sinaimg.cn/1854635021/50/1289455604/0', 'an': '71', 'un': '1854635021', 'iv': '0', 'sn': 'ladywang', None: ['reading', 'music""', '1949520584', '1288127940', '1193111400"""'], 'tg': 'life', '_id': '1854635021', 'fn': '258'}

对于第一个记录,ad等于hubei;"wuhan,但在原始文件中没有";它位于不同的列中。你知道吗

许多字段有错误的值。对于第一个记录:

1763212493,zhangniuzhang,male,,yes,i do,hubei wuhan,1763212493,69,86,316,,,tp2.sinaimg.cn/1763212493/50/5613831962/1,0,"free,house,trip,80","1863415082,1752861352"

输出应为:

{'mn': '316', 'ci': '', 'sx': 'male', 'ei': '', 'ad': 'hubei wuhan', 'vi': '', 'fui': '1863415082,1752861352', 'de': 'yes\xef\xbc\x8ci do', 'iu': 'tp2.sinaimg.cn/1763212493/50/5613831962/1', 'an': '69', 'un': '1763212493', 'iv': '0', 'sn': 'zhangniuzhang', 'tg': 'free,house,trip,80', '_id': '1763212493', 'fn': '86'}   

但是输出是混乱的,没有正确的顺序和正确的值。你知道吗

有什么建议吗?你知道吗


Tags: csvfreecndomaleadyeshouse
1条回答
网友
1楼 · 发布于 2024-04-20 12:32:37

你可以试试看。你知道吗

文件路径是您的测试.csv你知道吗

fdata = open(filepath) 
fread = [ l for l in fdata.readlines() if l.strip() ]

现在可以迭代fread了

相关问题 更多 >