如何删除不包含数字的文件行?

时间:2016-04-18 15:15:51

标签: python

我有一个包含如下所示行的文件:

43
763
hello
4903
world

2632
hello 382

我需要删除不包含数字的每一行。这意味着如果行包含一个字符串,但只有当它包含任何数字时,该行才能保留。

输出结果为:

43
763
4903
2632
hello 382

编辑: 所以现在我已经

with open('numstest.txt') as oldfile, open('numtest2.txt', 'w') as newfile:
    for line in oldfile:
        if not line.isalpha():
            newfile.write(line)

但由于某种原因,它输出的文件完全相同。

2 个答案:

答案 0 :(得分:3)

只需使用正则表达式,如下所示

s = """43
       763
       hello
       4903
       world

       2632
       hello 382"""

p = re.compile(r"\d")
lines = (line for line in s.splitlines() if p.search(line))
for line in lines:
    print(line)
43
763
4903
2632
hello 382

看看它是否适合你。

答案 1 :(得分:0)

将所有字符串添加到列表中,并使用isalpha()方法仅打印正确的字符串。

ls = ["43","763","hello","4903","world","2632","hello 382"]
for i in ls:
    if not i.isalpha():
        print(i)

编辑:要使文件IO正确,请在检查前从一行中删除换行符,如下所示:

with open('numstest.txt') as oldfile, open('numtest2.txt', 'w') as newfile:
    for line in oldfile:
        if not line.strip().isalpha():
            newfile.write(line)

strip方法从字符串的两端删除空格字符,以便您获取字符串"hello",而不是"hello\n"