如何删除列表中包含字母字符的值?

2024-05-20 13:37:01 发布

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

我正在读一个.dat文件,在它到达实际数据之前,前几行只是元数据。.dat文件的缩写示例如下。你知道吗

&SRS

SRSRUN=266128,SRSDAT=20180202,SRSTIM=122132,

fc.fcY=0.9000

&END

energy rc ai2

8945.016 301.32 6.7959

8955.497 301.18 6.8382

8955.989 301.18 6.8407

8956.990 301.16 6.8469

或如清单所示:

[' &SRS\n', ' SRSRUN=266128,SRSDAT=20180202,SRSTIM=122132,\n', 'fc.fcY=0.9000\n', '\n', ' &END\n', 'energy\trc\tai2\n', '8945.016\t301.32\t6.7959\n', '8955.497\t301.18\t6.8382\n', '8955.989\t301.18\t6.8407\n', '8956.990\t301.16\t6.8469\n']

我以前试过这个,但它:

def import_absorptionscan(file_path,start,end):
    for i in range(start,end):
        lines=[]
        f=open(file_path+str(i)+'.dat', 'r')
        for line in f:
            lines.append(line)
        for line in lines:
            for c in line:
                if c.isalpha():
                    lines.remove(line)
        print lines

但我得到一个错误:ValueError:列表.删除(x) :x不在列表中

我开始研究堆栈溢出,但大部分是如何从字符串中提取字母字符,所以我提出了这个问题。你知道吗

这将生成一个字符串列表,每个字符串组成文件中的一行。我想删除任何字符串,其中包含任何字母字符,因为这应该删除所有的元数据,只留下数据。任何帮助都将不胜感激谢谢。你知道吗


Tags: 文件数据字符串in列表forlinedat
2条回答

此外,还可以使用any语句检查字母。在内部for循环中添加:

If any (word.isalpha() for word in line)

请注意,这将说明“ver9”都是数字,因此如果这是一个问题,请将其替换为:

line_is_meta = False
for word in line:
    if any (letter.isalpha() for letter in word):
    line_is_meta = True
        break
    for letter in word:
        if letter.isalpha():
            line_is_meta = True
            break
if not line_is_meta: lines.append (line)

我怀疑您需要一个比“字符串是否包含字母”更健壮的规则,但可以使用正则表达式检查:

re.search("[a-zA-Z]", line)

您可能想看看regular expression docs。你知道吗

相关问题 更多 >