如何在遇到python中指定的单词时在txt中添加\n
我有一个txt文件(a.txt),其中包含以下信息:如何在遇到python中指定的单词时在txt中添加\n,python,Python,我有一个txt文件(a.txt),其中包含以下信息: 259 96 339 96 339 249 259 249 person 200 12 22 23 333 312 33 249 car 我想使用python将此A.txt修改为类似的内容: 259 96 339 96 339 249 259 249 person 200 12 22 23 333 312 33 249 car 这意味着我必须在“person”或“car”之后添加('\n') 我很难找到单词的位置,而seek(n)
259 96 339 96 339 249 259 249 person 200 12 22 23 333 312 33 249 car
我想使用python将此A.txt修改为类似的内容:
259 96 339 96 339 249 259 249 person
200 12 22 23 333 312 33 249 car
这意味着我必须在“person”或“car”之后添加('\n')
我很难找到单词的位置,而seek(n)只能找到字符的位置。
当我运行以下代码时
f.seek(0)
f.write('\n')
它总是在末尾添加新行,而不是在前面添加新行。正则表达式是您的朋友:
import re
string = "259 96 339 96 339 249 259 249 person 200 12 22 23 333 312 33 249 car"
rx = re.compile(r'\b(person|car)\s*')
string = rx.sub(r'\1\n', string)
print(string)
这就产生了
259 96 339 96 339 249 259 249 person
200 12 22 23 333 312 33 249 car
假设文件的全部内容都是字符串,我们可以使用SimpleReplace方法,如下面的代码所示
a = "259 96 339 96 339 249 259 249 person 200 12 22 23 333 312 33 249 car 12"
a = a.replace("person ", "person\n").replace("car ","car\n")
print(a)
上述代码将显示:
259 96 339 96 339 249 259 249 place
200 12 22 333 312 33 249车
十二,
什么时候
重新导入
s='259 96 339 96 339 249 259 249人200 12 22 23 333 312 33 249车'
您可以使用str.替换(但它在下一行的开头留有空格):
打印(s.replace('person','person\n')。replace('car','car\n'))
输出(下一行开头的空格处的点)。如果添加空间信息替换模式,则不会替换最后出现的“人”或“车”
259 96 339 96 339 249 259 249 person
200 12 22 23 333 312 33 249 car
或者可以使用正则表达式:
s=re.sub(r'\b(人车)\b',r'\1\n',s)
输出
259 96 339 96 339 249 259 249 person
200 12 22 23 333 312 33 249 car
或者更一般地说,您可以在数字和空格后替换所有单词:
s=re.sub(r'(?这里有一个解决方案,它可以处理整个文本文件。它将在一系列数字后面的每个单词后面附加一个换行符
import re
txt = r'259 96 339 96 339 249 259 249 person 200 12 22 23 333 312 33 249 car'
patt = r'\b[\d\s]+\w+\b'
found = re.findall(patt, txt)
outtxt = ''.join(['%s\n' % f.strip() for f in found])
>>>outtxt
259 96 339 96 339 249 259 249 person
200 12 22 23 333 312 33 249 car
正则表达式可能是\b(\w+)\b
@AdamSmith:我先有了它,但你需要先去掉空格。真的。\b(\w+)\b\s*
然后。@AdamSmith:这使得最后一个单词边界无效(\w+\s*
自动暗示单词边界)。这是真的吗?我认为\w+\s*
只有在匹配非零个空格时才意味着单词边界。最后一个单词和EOF之间是否有单词边界?我实际上不知道。这似乎是最简单的解决方案!