微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ParserError:第32行中应有2个字段,看到了4

如何解决ParserError:第32行中应有2个字段,看到了4

我无法解析txt文件(请参见此处:File) 这是我的代码

import pandas as pd
objectname = r"path"
df = pd.read_csv(objectname,engine = 'python',sep='\t',header=None)

很遗憾,它不起作用。由于这个问题已被问过几次,所以我尝试了许多建议的解决方案(大多数可以在这里找到:Possible solutions

但是,对我来说,没有任何窍门。例如,当我使用

sep='delimiter'

数据框已创建,但所有内容最终都在同一列中。

当我使用

error_bad_lines=False

只跳过了我感兴趣的行。

唯一可行的方法是,当我第一次打开txt文件,复制内容,将其粘贴到Google表格中,将文件另存为CSV并打开数据框时。

我猜想另一个解决方法是使用

df = pd.read_csv(objectname,sep = 'delimiter',header=None)

结合拆分功能Split function

有没有建议如何使这项工作不需要转换文件或使用split函数?我正在使用Python 3和Windows 10。 任何帮助表示赞赏。

解决方法

您的文件带有制表符分隔符,但没有TSV。该文件是元数据的混合,后面是“标准” TSV,然后是更多的元数据。因此,我发现将元数据作为独立于加载数据的单独任务来处理是有用的。

这是我提取元数据行的操作:

with open('example.txt','r') as file_handle:
    file_content = file_handle.read().split('\n')

for index,line in enumerate(file_content):
    if index<21 or index>37:
        print(index,line.split('\t'))

请注意,表示元数据开始和结束的行(在我的示例中为21和37)特定于该文件。我已经提供了我在下面使用的经过整理的数据(根据您的链接文件)。

另外,我使用

将TSV加载到了Pandas中
import pandas as pd
df = pd.read_csv('example.txt',engine = 'python',sep='\t',error_bad_lines=False,header=None,skiprows=list(range(21))+list(range(37,89)))

同样,我跳过了文件开头和文件结尾的元数据。

这是我尝试过的文件。我已修剪掉多余的数据以减少行数。

TITLE   Test123
DATA TYPE   
ORIGIN  JASCO
OWNER   
DATE    19/03/28
TIME    16:39:44
SPECTROMETER/DATA SYSTEM    
LOCALE  1031
RESOLUTION  
DELTAX  -0,5
XUNITS  NANOMETERS
YUNITS  CD [mdeg]
Y2UNITS HT [V]
Y3UNITS ABSORBANCE
FIRSTX    300,0000
LASTX     190,0000
NPOINTS      221
FIRSTY      -0,78961
MAXY        37,26262
MINY       -53,38971
XYDATA
300,0000    -0,789606   182,198 -0,0205245
299,5000    -0,691644   182,461 -0,0181217
299,700976   182,801 -0,0136756
298,614708   182,799 -0,0131957
298,422611   182,783 -0,0130073
195,0000    26,6231 997,498 4,7258
194,5000    -17,3049    997,574 4,6864
194,0000    16,0387 997,765 4,63967
193,5000    -14,4049    997,967 4,58593
193,277261   998,025 4,52411
192,5000    -29,6098    998,047 4,45244
192,0000    -11,5786    998,097 4,36608
191,5000    34,0505 998,282 4,27376
191,0000    28,2325 998,314 4,1701
190,5000    -13,232 998,336 4,05036
190,0000    -47,023 998,419 3,91883

##### Extended Information
[Comments]
Sample name X
Comment
User
Division
Company RWTH Aachen

[Detailed Information]
Creation date   28.03.2019 16:39

Data array type Linear data array * 3
Horizontal axis Wavelength [nm]
Vertical axis(1)    CD [mdeg]
Vertical axis(2)    HT [V]
Vertical axis(3)    Abs
Start   300 nm
End 190 nm
Data interval   0,5 nm
Data points 221     

[Measurement Information]
Instrument name CD-Photometer
Model name  J-1100
Serial No.  A001361635

Detector    Standard PMT
  Lock-in amp.  X mode
  HT volt   Auto

Accessory   PTC-514
Accessory S/N   A000161648
  Temperature   18.63 C
  Control sonsor    Holder
  Monitor sensor    Holder

Measurement date    28.03.2019 16:39

Overload detect 203
Photometric mode    CD,HT,Abs
Measure range   300 - 190 nm
Data pitch  0.5 nm
CD scale    2000 mdeg/1.0 dOD
FL scale    200 mdeg/1.0 dOD
D.I.T.  0.5 sec
Bandwidth   1.00 nm
Start mode  Immediately
Scanning speed  200 nm/min
Baseline correction Baseline
Shutter control Auto
Accumulations   3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。