2017-07-10 55 views
0

說我有一個文本文件像這樣的東西:添加「 n」來指定行在文本

Områder dorsalt i overgangssonen, midtre tredjedel med blodpunkter.R: Malignitet ikke påvist

我怎麼能在文本中的每個R:前添加\n幾個文件? 這是我的代碼至今:

import os 
for root, dirs, files in os.walk(".", topdown=True): 
    for name in files: 
     if name != "merge_reports_into_metadata_csv.py" or name != "BakgrunnsData_v2.csv" or name != "remove_text_windows.py": 
      slash = "\\" 
      if root == ".": 
       slash = "" 
      f = open(root.strip(".").strip("\\") + slash + name, "r") 
      lines = f.readlines() 
      f.close() 
      f = open(root.strip(".").strip("\\") + slash + name, "w") 
      for line in lines: 

       if line != "R:" + "\n": 
        f.write(line) 
       else: 
        print("adding line space the word 'R:' from " + name) 
      f.close() 
print("all 'R:'s are moved one line down") 

回答

2

您可以使用正則表達式替換與re模塊:

In [1768]: text = u'Områder dorsalt i overgangssonen, midtre tredjedel med blodpunkter.R: Malignitet ikke påvist' 

In [1771]: new_text = re.sub(r'(R:)', r'\n\1', text, flags=re.M) 

In [1773]: print(new_text) 
Områder dorsalt i overgangssonen, midtre tredjedel med blodpunkter. 
R: Malignitet ikke påvist 

您可以f.read()一次讀取你的文件和文字傳遞給re.sub

如果您的文件比較大,我會建議逐行讀取並寫入每行,因爲它被替換爲新文件。

0

它看起來像你對我可以通過一個簡單的文本做替換:

# -*- coding: utf-8 -*- 

text = "Områder dorsalt i overgangssonen, midtre tredjedel " \ 
     "med blodpunkter.R: Malignitet ikke påvist\n" 

print text.replace("R:", "\nR:") 

如果你的模式是比較複雜的,或者如果它有場合周圍的空間,那麼其他的答案提的正則表達式是一個好方法。

0

可以全部替換 「R:」 文本和

text.replace('R:','\nR:')