python - Pandas 通过正则表达式读取带有字符串定界符的 CSV

标签 python regex csv pandas

我正在尝试将一个格式奇怪的文本文件导入到 pandas DataFrame 中。下面是两行示例:

LOADED LANE       1   MAT. TYPE=    2    LEFFECT=    1    SPAN=  200.    SPACE=   10.    BETA=   3.474 LOADEFFECT 5075.    LMAX= 3643.    COV=  .13
LOADED LANE       1   MAT. TYPE=    3    LEFFECT=    1    SPAN=  200.    SPACE=   10.    BETA=   3.515 LOADEFFECT10009.    LMAX= 9732.    COV=  .08

首先我尝试了以下方法:

df = pd.read_csv('beta.txt', header=None, delim_whitespace=True, usecols=[2,5,7,9,11,13,15,17,19])

这似乎工作正常,但是当它碰到上面的示例行时就搞砸了,其中 LOADEFFECT 字符串后没有空格(您可能需要向右滚动一点才能看到它这个例子)。我得到如下结果:

632   1   2   1  200  10  3.474  5075.  3643.  0.13
633   1   3   1  200  10  3.515  LMAX=   COV=   NaN

然后我决定使用正则表达式来定义分隔符。经过多次试验和错误运行(我不是正则表达式方面的专家),我设法接近以下行:

df = pd.read_csv('beta.txt', header=None, sep='/s +|LOADED LANE|MAT. TYPE=|LEFFECT=|SPAN=|SPACE=|BETA=|LOADEFFECT|LMAX=|COV=', engine='python')

这几乎可以工作,但出于某种原因在一开始就创建了一个 NaN 列:

632 NaN  1  2  1  200  10  3.474   5075  3643  0.13
633 NaN  1  3  1  200  10  3.515  10009  9732  0.08

在这一点上,我想我可以删除第一列,然后就可以了。但是我想知道设置正则表达式以一次性正确解析此文本文件的正确方法是什么。有任何想法吗?除此之外,我相信有一种更聪明的方法来解析这个文本文件。我很高兴听到您的建议。

谢谢!

最佳答案

import re
import pandas as pd
import csv
csvfile = open("parsing.txt") #open text file
reader = csv.reader(csvfile)
new_list=[]
for line in reader:
    for i in line:
        new_list.append(re.findall(r'(\d*\.\d+|\d+)', i))

table = pd.DataFrame(new_list)
table # output will be pandas DataFrame with values

关于python - Pandas 通过正则表达式读取带有字符串定界符的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29803857/

相关文章:

python - TypeError : expected string or buffer with re. 匹配和 matchObj.group()

Python:如何保存混淆矩阵

javascript - D3 : Loading multiple CSV files, 并使用平行坐标可视化它们

Python:Numpy Data IO,如何通过不同的 dtype 为每一列保存数据?

php - 如何检查一个字符串是否至少包含 5 个唯一字符且长度至少为 7 个字符?

javascript - 需要正则表达式来替换整个文件夹路径,同时保留最后一个文件夹可以是任何内容的文件名

Ruby-on-Rails 3.2 : Export a CSV with a large data set (100, 000 条记录)

python - 将字典(数组)导出到 json

python - Websockify 错误 - 地址已在使用中

python:使用 gzip 文件遍历 tar 存档