我有一個自動生成的檔案。當|在 if 陳述句中找到按位運算子時,我需要修改/編輯檔案,例如:
if ((x ==1) | (y==1))
也需要修改:
if ((x ==1) || (y==1))
因此,按位運算子需要更改為邏輯運算子,僅在條件陳述句中。
我到目前為止的代碼如下:
with open('filename','r') as f:
file_data = f.readlines()
file_data_str = ''.join(file_data)
for line in file_data:
if line.lstrip().startswith('if') and ('|' in line):
file_data_str = file_data_str.replace(' | ', ' || ')
with open('filename','w') as f:
f.write(file_data_str)
當前的代碼改變了每次發生|到||不管|是在檔案中。所需的行為是僅在 if 陳述句中更改|為||。
我該如何解決?
uj5u.com熱心網友回復:
with open('Text.txt','r') as f:
file_data = f.readlines()
i=0
while i in range(len(file_data)):
for line in file_data:
if file_data[i].lstrip().startswith('if') and ('|' in line):
file_data[i]= file_data[i].replace(' | ', ' || ')
i =1
file_data_str = ''.join(file_data)
with open('Text.txt','w') as f:
f.write(file_data_str)
這應該有效。
uj5u.com熱心網友回復:
with open('filename','r') as f:
file_data = f.readlines()
file_data_str = ''.join(file_data)
for line in file_data:
if line.lstrip().startswith('if') and ('|' in line):
#the problem is here: with this statement you change all occurrences
file_data_str = file_data_str.replace(' | ', ' || ')
with open('filename','w') as f:
f.write(file_data_str)
我會解決這個問題:
with open('filename','r') as f:
file_data = f.readlines()
for ii in range(len(file_data)):
if file_data[ii].lstrip().startswith('if') and ('|' in line):
file_data[ii]= file_data[ii].replace(' | ', ' || ')
file_data_str = ''.join(file_data)
with open('filename','w') as f:
f.write(file_data_str)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/350343.html
