我是stackoverflow的新手,所以如果我的帖子没有正确发布或者你需要更多信息,请告诉我。所以我有一个非常奇怪的问题。我有一个txt文件,其中许多行以“;”分隔。通常应该有42个字段/列,但由于某种原因导入时我的txt文件中的某些行被“;”分隔它显示了大量被跳过的行,因为python“预计42个字段,看到45”。我使用pandas导入文件,因为我的大部分转换都是用它完成的:
text = pd.read_csv('file.txt',encoding='ISO-8859-1', keep_default_na=False,error_bad_lines=False, sep=';')
我发现的是,对于某些行,我有3个额外的“;”在末尾。因为大多数数据是保密的,我无法在公司外共享,所以我生成了一个类似的3行txt文件,以显示我的问题所在。
;;; 5123123;文本1; text2的;;;; 123124;文字3;文本4 ;;;; 5234234; text5; text6 ;;;; 412321; text7; text8 ;;;; 512312; text9; text10 ;;; ; 15123213; text11; text12 ;;;; 123123; text13; text14 ;;; 4666190;文本1; text2的;;;; 312312;文字3;文本4 ;;;; 5123123; text5; text6 ;;;;;;;;;;;;;;;;;;;;;; 55123; text7; text8 ;;; 5123123;文本1; text2的;;;; 1321321;文字3;文本4 ;;;; 123124; text5; text6 ;;;;;;;;;;;;;;;;;;;;;; 3123123; 512312312; text7 ;;;
所以那些与我的文件类似的三行,但是有替换名称。第一行和第二行是正确的,但第三行在导入时会产生45个字段。
那么有没有一种方法可以在导入之前浏览文件并查找以;;;5123123
开头的所有行并检查是否有“;”在最后,如果有删除它们,然后导入它们。问题是只有一些行以;;;5123123
开头。这个错误有几百行,整个数据只有50多行。
答案 0 :(得分:0)
我相信pd是pandas,所以你可以使用usecols
方法read_csv
方法
text = pd.read_csv('file.txt',
encoding='ISO-8859-1',
keep_default_na=False,
error_bad_lines=False,
sep=';',
usecols=list(range(43)),
names=list(range(43)),
headers=None)
<强>被修改强>
您还可以添加names
和headers
参数
答案 1 :(得分:0)