我有一个几乎有一千行的文本文件,例如:
世界新闻,电流 世界新闻,当前,世界新闻@这里”, 'WorldNewsPro @ here Zebra,Poacher', '码头,DS_URLs @这里' 斑马,偷猎者,ZebraPoacher @这里 斑马,码头,ZebraDock @这里 Timer33,Timer33 @这里
有时行没有“@here”结束,有时它以“@here”结尾,有时它在行的中间有“@here”,有时行以“@here”结尾
我想要删除所有没有“@here”的行。我试过RegEx:
> (^(@here$))
> [\W](@here)
等。没有运气。
我应该如何用“@here”拉线,这样我的新文件(或输出)只有:
世界新闻,电流,世界新闻@这里”, “WorldNewsProfessional52 @这里 斑马,偷猎者, '文件分享,AC_DS_URLs @这里' 斑马,偷猎者,ZebraPoacher @这里 斑马,文件分享,ZebraDocushare @这里 XNTimer,XNTimer @这里
我在想它应该从头到尾读取整行,如果它在行中的任何地方都有,请打印出来。如果没有,请忽略并阅读下一行。
谢谢,
阿德里安
答案 0 :(得分:3)
也许这会有所帮助:(假设filename
是输入文件的名称)
with open(filename) as stream:
for line in stream:
if '@here' in line:
print line
答案 1 :(得分:1)
你不需要正则表达式。您可以使用字符串方法执行此类简单过滤:
def hasstr( lines, s ):
# a generator expression can filter out the lines
return (line for line in lines if s in line)
# get all lines in the file with @here in them
filtered = hasstr(open(the_file, 'rt'), '@here')
答案 2 :(得分:1)
您需要in
运算符。
for line in sys.stdin:
if '@here' in line:
sys.stdout.write(line)