如何删除文本文件中包含字母和字符的所有行

how to delete all lines containing Letters and characters for a textfile

我有一个包含单词、数字和字符的文本文件。我想删除所有带有字符和单词的行,并保留带有数字的行。 我发现所有那些带有单词和字符的行都有“r”的字母。所以我把我的代码写成:

文本文件包含这些行作为示例:

-- for example
-- 7 Febraury 2022
5 7 1 5 3.0 2
3*2 3 5 7.0 3

我想保留这两行:

5 7 1 5 3.0 2
3*2 3 5 7.0 3

这是写的代码: textfile = open('test.txt', 'r') A = textfile.readlines()

L = []
for index,name in enumerate(A):
    if 'r' in name:
        L.append(index)

for idx in sorted(L, reverse = True):
    del A[idx]

我知道这不是一个好方法,有什么建议吗?

您只能找到使用 regex

的单词
import re
with open(r'text_file.txt', 'r') as f:
    data = f.readlines()

with open(r'text_file.txt', 'w') as f:
    for line in data:
        if re.findall(r"(?!^\d+$)^.+$", line):
            f.write(line)

您可以使用正则表达式库 re。一种方法是遍历这些行,然后仅在 re.match("[^0-9 ]", line) == None.

时保留该行

如果您想在不导入任何东西(例如,re)的情况下执行此操作,那么您可以这样做:

keep_these = []

def is_valid(t):
    try:
        float(t.replace('*', '0'))
        return True
    except ValueError:
        pass
    return False

with open('test.txt', encoding='utf-8') as infile:
    for line in infile:
        if all(is_valid(t) for t in line.strip().split()):
            keep_these.append(line)

print(keep_these)

因此 keep_these 列表将包含对您要保留的行的引用,例如,您可以将其用于 re-write 文件