我有一个包含如下所示行的文件:
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)
但由于某种原因,它输出的文件完全相同。
答案 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"