添加" \ n"到文本中的特定行

时间:2017-07-10 09:50:24

标签: python python-3.x

假设我有一个类似这样的文本文件:

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

如何在文本中的每个\n之前为多个文档添加R:? 这是我到目前为止的代码:

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

3 个答案:

答案 0 :(得分:3)

您可以使用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

如果您的文件相当大,我建议您逐行阅读,并在更换为新文件时写下每一行。

答案 1 :(得分:1)

在我看来,你可以通过一个简单的文本替换来实现这一点:

[
  {
    "India":{
             "Arm Export": 30,
             "Food Export": 50
            }
  },
  {
   "USA":{
          "Arm Export": 90,
          "Food Export": 5
         }
  },
  {
   "Russia":{
             "Arm Export": 90,
             "Food Export": 5
            }
  }
]

如果你的模式更复杂,或者有时它周围有空格,那么提到正则表达式的其他答案是一个很好的方法。

答案 2 :(得分:0)

您可以替换所有" R:"在文字和

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