如何删除文本文件中包含字母和字符的所有行
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 文件
我有一个包含单词、数字和字符的文本文件。我想删除所有带有字符和单词的行,并保留带有数字的行。 我发现所有那些带有单词和字符的行都有“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 文件