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

时间:2018-02-28 12:24:01

标签: python

我正在阅读.dat文件,前几行只是元数据才能获得实际数据。下面是.dat文件的缩写示例。

  

&安培; SRS

     

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

     

fc.fcY = 0.9000

     

     

&安培; END

     能量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:list.remove(x):x不在列表中

我开始查看堆栈溢出然后但是大部分内容是如何从字符串中删除字母字符,所以我提出了这个问题。

这会生成一个字符串列表,每个字符串在文件中构成一行。我想删除任何包含任何字母字符的字符串,因为这应删除所有元数据并只保留数据。任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

我怀疑你会想要一个比#34更强大的规则吗?字符串是否包含一个字母?",但你可以使用正则表达式来检查:

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

您可能想查看regular expression docs

答案 1 :(得分:0)

此外,您可以使用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)