在python文本par中跳过行并将它们拆分为列

2024-06-23 02:53:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python 2.7.5中解析一个空格分隔的文本文件,它看起来有点像:

^{1}$

在编辑:对不起开头加的空格,我没看到

我希望能够将文本文件拆分为一个包含变量和描述的数组,并在两个单独的列中剪切所有无用的数据并跳过任何不以字符串开头的行。我设置代码的方式是:

^{pr2}$

到目前为止,这段代码跳过了变量行之间的大多数描述性行,但仍有一些在解析过程中弹出。如果我能得到任何帮助,无论是故障排除我的跳绳或帮助我开始在列形成部分,这将是伟大的!我在python中也没有太多的有效性。谢谢!在

编辑:代码之前的文件的一部分

CASEID            (id) Case Identification                   1   15   AN



MIDX              (id) Index to Birth History                16   1  No
                           1:6 

之后:

CASEID            (id) Case Identification                   1   15   AN

MIDX              (id) Index to Birth History                16   1  No
                           1:6  

Tags: tono代码anid编辑indexhistory
3条回答

如果您使用熊猫,请尝试以下操作:

from pandas import read_csv
data = read_csv('file.txt', error_bad_lines=False).drop(['useless data'])

如果文件的宽度是固定的(与逗号分隔的值相反),则使用^{}

假设变量或描述中没有空格,这将起作用

with open('path/to/file') as infile:
    answer = []
    for line in file:
        if not line.strip():
            continue
        if line.startswith(' '): # skipping descriptions
            continue
        splits = line.split()
        var, desc = splits[:2]
        answer.append([var, desc])

您需要筛选出以空格开头的行,并拆分所有其他行以获得前两列。在

将这两条规则转换成代码:

with open('Myfile.txt') as f:
    for line in f:
        if not line.startswith(' '):
            variable, description, _ = line.split(None, 2)
            print(variable, description)

就这些了。在


或者,更直接地翻译:

^{pr2}$

现在,values(variable, description)元组上的迭代器。而且很好,而且很有说明性。第一行意味着“过滤掉以空格开头的行”。第二个意思是“拆分每一行得到前两列”。(您可以将第一个写成genexpr而不是filter,或者将第二个写成map而不是genexpr,但我认为这是最接近英语描述的。)

相关问题 更多 >