【发布时间】:2016-12-26 07:47:52
【问题描述】:
我在处理 Pandas.read_csv 时遇到问题
我想阅读这个文本文件(见下文)当我把这些数据复制到 excel > 文本到列 > 由“空格”分隔时,它给了我确切的输出正在寻找。
我尝试了很多不同的方法,我认为考虑多个空格的正则表达式可以解决问题,但我没能成功。
我试试这个代码:
petrelTxt = pd.read_csv(petrelfile, sep = ' ', header = None)
它给了我错误
CParserError: Error tokenizing data. C error: Expected 6 fields in line 2, saw 17
当我尝试更改“sep = '\s+'”时,它会使其位于文件的更下方,但仍然无法正常工作。
petrelTxt = pd.read_csv(petrelfile, sep = '\s+', header = None)
CParserError: Error tokenizing data. C error: Expected 5 fields in line 3, saw 6
这是原始的txt文件:
# WELL TRACE FROM PETREL
# WELL NAME: ZZ-0113
# WELL HEAD X-COORDINATE: 9999999.00000000 (m)
# WELL HEAD Y-COORDINATE: 9999999.00000000 (m)
# WELL KB: 159.00000000 (ft)
# WELL TYPE: OIL
# MD AND TVD ARE REFERENCED (=0) AT KB AND INCREASE DOWNWARDS
# ANGLES ARE GIVEN IN DEGREES
# XYZ TRACE IS GIVEN IN COORDINATE SYSTEM WGS_1924_UTM_Zone_42N
# AZIMUTH REFERENCE TRUE NORTH
# DX DY ARE GIVEN IN GRID NORTH IN m-UNITS
# DEPTH (Z, TVD) GIVEN IN ft-UNITS
#======================================================================================================================================
MD X Y Z TVD DX DY AZIM INCL DLS
#======================================================================================================================================
0.0000000000 999999.00000 9999999.0000 159.00000000 0.0000000000 0.0000005192 -0.000000000 1.3487006929 0.0000000000 0.0000000000
132.00000000 999999.08032 9999999.9116 27.000774702 131.99922530 0.0803153923 -0.088388779 139.08870069 0.3400000000 0.2575757504
221.00000000 999999.19115 9999999.8017 -61.99775149 220.99775149 0.1911487882 -0.198290891 132.93870069 0.3200000000 0.0456726104
【问题讨论】:
-
它不是正确的 CSV 文件,因为您有 cmets。我记得
read_csv可以选择跳过一些行。 -
阅读文档:read_csv 它可以选择跳过某些行并识别评论 - 你必须使用
comment="#"