2017-12-27 397 views
0

计划,该计划,从文件中没有Python中的特定词在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) 

OR

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个代码不工作或不完整!

+0

一个有问题的第二个例子肯定是你不能在这种情况下有一个空的“if”文本对齐“in line:'表达式,没有任何事情要做。至少,你应该提供一个'pass'命令。或者,使用'如果不是'文本对齐':' –

回答

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,"") 

if后没有声明,所以它不能工作。除了你可以结合两个条件:

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) 
+0

代替“THIS_LINE”写什么? –

+0

我改变了这个答案。它现在只复制匹配行。 – gonczor

+0

我已更新我的答案,以便它不会即时更改读取文件。如果您想在一次运行中更改它,您将需要进行一些更改: 1.以读写模式打开它 2.确保在读取和修改内容后,读取光标位于适当位置。 – gonczor

2

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

if line.startswith('<div') & line.endswith('>') & ('text-align' not in line): 
     #do something 
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) 
1

THANKYOU EVERYONE, 因为你所有我能搞清楚我的答案,

一些代码输出的是什么,我问了,但这里的反向是这是解决我的答案代码,

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() 
相关问题