从Python中没有特定单词的文件中删除一行

问题描述 投票:0回答:5

用Python编写的程序,

删除以<div开头并以>结尾的行,但在它之间没有单词text-align

输入:

<div>
<div><div>
<div style="text-align: center;">
<div kjgueberhfui;hh;ah>
<div kjfh fhefhufh  fhueshf >
<strong>PANKY</strong>
<div style="text-align: left;">

输出:

<div style="text-align: center;">
<strong>PANKY</strong>
<div style="text-align: left;">

我正在寻找类似的东西:

f1 = open('input.txt','r')
filedata = f1.read()
filedata = re.sub("<div[^>]*/^((?!text-align).)*$/[^>]*>","",filedata)

要么

f1 = open('input.txt','r')
for line in f1:
    if "<div" in line:
        if "text-align" in line;
        else:
            f1.write(line.replace(THIS_LINE,"")

以上2个代码不起作用或不完整!

python regex linux file replace
5个回答
2
投票
f1 = open('input.txt','r')
for line in f1:
    if "<div" in line:
        if "text-align" in line;
        else:
            f1.write(line.replace(THIS_LINE,"")

之后没有声明,所以它无法正常工作。此外,您可以结合两个条件:

with open('input.txt','r') as f1, open('output.txt', 'w') as f_out:
    for line in f1:
        if not ("<div" in line and "text-align" not in line):
            f2.write(line)

2
投票

您可以使用字符串的startswith和endswith函数。

    if line.startswith('<div') & line.endswith('>') & ('text-align' not in line):
        #do something

1
投票

谢谢大家,因为你们所有我能够找到答案,

你的一些代码输出与我要求的相反,但这里的代码是我的答案的解决方案,

f1 = open('input.txt','r')
f2 = open('output.txt','w')

for line in f1:
    if "<div" in line and "text-align" in line:
        f2.write(line)
    if "<div" not in line:
        f2.write(line)

f1.close()
f2.close()

0
投票

对这个问题更正确和完整的答案是这样的:

lines = open("input.txt").read().splitlines()

with open("input.txt", "w") as file:
    for line in lines:
        if not (line.startswith("<div") and "text-align" not in line and line.endswith(">")):
            file.write(line + "\n")

这将从input.txt中删除所有不需要的行


0
投票

我希望这能帮到您:

with open('input.txt','rb+') as f1:    
    for div in f1:
          if 'text-align' in div or '<div' not in div:
                print(div)
© www.soinside.com 2019 - 2024. All rights reserved.