我不得不对我的答案进行一些编辑。您可以尝试使用这两行代码来获得相同的结果。假设每行至少有2个字符。
with open("xyz.txt", "r") as f, open("out.txt", 'w') as f2:
for x in f:
if x[3] == ':': f2.write(x)
以下代码将解决这个假设。无论每行的长度如何,它都应该能够读取文件。
import re
with open("xyz.txt", "r") as f, open("out.txt", 'w') as f2:
for x in f:
if re.search('^...:',x): f2.write(x)
正则表达式将检查 x 的值是否以任意 3 个字符开头,后跟冒号 (:)。如果是,则该行准备写入文件。
我的输入文件 xyz.txt 包含以下记录。
hsh:222
shhhshshs:2294
sjasda:2324
s_s:223
aaa:111
asdasd:1111
a:
输出文件 out.txt 中有以下记录。
hsh:222
s_s:223
aaa:111
如果您想检查以下模式中的任何字符串:
:123
a:123
aa:123
aaa:123
其中
a
可以是任何字符,那么您可以按照以下方式更改代码:
with open("xyz.txt", "r") as f, open("out.txt", 'w') as f2:
for x in f:
if ':' in x[:3] : f2.write(x)
这里将检查前4个位置中是否有:
您可以按以下方式使用正则表达式编写:
import re
with open("xyz.txt", "r") as f, open("out.txt", 'w') as f2:
for x in f:
if re.search('^.{0,3}:',x): f2.write(x)
如果输入文件如下:
hsh:222
shhhshshs:2294
sjasda:2324
s_s:223
aaa:111
asdasd:1111
a:
:1
输出结果如下:
hsh:222
s_s:223
aaa:111
a:
:1
newline = x.strip()+.split(':')
这段代码的作用是什么?请查看相关函数文档并正确调用它们(例如,去掉+
)。 - Mad Physicistif x[4] == ':' : f2.write(x)
? - Joe Ferndzgrep -vE '^[^:]{4}' file.txt
- tripleee