簡體   English   中英

Python - 替換文件中的多行字符串

[英]Python - replace multiline string in a file

我正在編寫一個腳本,在文件中找到幾行文本。 我想知道如何用其他給定的文本替換該文本 (新字符串可能更短或更長)。 我正在使用re.compile()創建一個多行模式,然后在我喜歡這樣的文件中查找任何匹配:

for match in pattern.finditer(text_in_file)
    #if it would be possible I wish to change 
    #text in a file here by (probably) replacing match.group(0)

是否有可能以這種方式完成 (如果是,那么如何以最簡單的方式做到這一點?)或者我的方法是錯誤的或難以正確地做到(如果是,那么如何做到對了?)

使用pattern.sub('replacement text', text_in_file)替換匹配。

您可以根據需要在替換模式中使用反向引用。 如果弦更短或更長則無關緊要; 該方法返回一個帶有替換的字符串值。 如果文本來自文件,則需要將文本寫回該文件以替換內容。

如果需要就地進行替換,可以使用fileinput模塊 ; 該模塊負責將原始文件移到一邊並在其中寫入一個新文件。

簡單的解決方案:

  1. 將整個文本作為字符串讀入變量。
  2. 使用多行正則表達式匹配要替換的內容
  3. 使用output = pattern.sub('replacement', fileContent)

復雜的解決方案:

  1. 逐行讀取文件
  2. 打印任何與模式開頭不匹配的行
  3. 如果找到匹配的開頭,請停止打印,直到看到結束圖案。
  4. 如果看到結束圖案,請打印替換件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM