2017-12-27 530 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() 
相關問題