【发布时间】:2019-04-15 15:14:05
【问题描述】:
我有一个 csv 文件,其中所有列都在一行中,用引号括起来并用逗号分隔。列在一行中。
csv 中的行以逗号分隔,如果有 2 个逗号,则表示存在缺失值。我想用这些参数分隔这些列。如果行有引号,则引号中的逗号不应作为分隔符,因为这是地址。
这是一个数据样本(它是一个csv,我把它转换成字典给你看)
{'Store code,"Biz","Add","Labels","TotalSe","DirectSe","DSe","TotalVe","SeVe","MaVe","Totalac","Webact","Dions","Ps"': {0: ',,,,"Numsearching","Numsearchingbusiness","Numcatprod","Numview","Numviewed","Numviewed2","Numaction","Numwebsite","Numreques","Numcall"',
1: 'Nora,"Ora","Sgo, Mp, 2000",,111,44,33,121,1232,53411,4,5,,3',
2: 'mc11,"21 old","tjis that place, somewher, Netherlands, 2434",,3245,325,52454,3432,243,4353,343,23,23,18'}}
到目前为止我已经尝试过了,但有点卡住了:
disc = pd.read_csv('/content/gdrive/My Drive/blank/blank.csv',delimiter='",')
csv 样本: csv sample
【问题讨论】:
-
谁对你可怜的 csv 数据做了那个?这太可怕了?你能从源头上修复它吗?这看起来像
','分隔和'"'引用的字符串 - 但使它成为字典的部分完全没有意义。 -
@PatrickArtner 很遗憾我不能
-
要么我不理解问题中的某些内容,要么内置模块 csv 的默认行为已经在处理您的情况。
import csv with open('data.csv', newline='') as inFile: reader = csv.reader(inFile, delimiter=',', quotechar='"') for line in reader: # Do something with the data -
@Pagefault 如果我使用 ',' 作为分隔符,它会将整个第一行读取为 1 列,而不是将每个项目分隔为一列
-
您的 csv 文件的问题是每一行都以
"开头和结尾,您可以简单地预处理文件以删除那些开头和结尾的"字符吗?其余的应该可以被 csv 阅读器轻松阅读。
标签: python pandas csv data-cleaning