pythonre.sub公司使用()替换lin中的字符串

2024-04-19 11:37:18 发布

您现在位置:Python中文网/ 问答频道 /正文

试着做一些简单的事情: 我有一行文本文件,我知道确切的格式。一行有六个整数,用空格隔开。在

例如:

line = '78 170 180 1 2 3'

我要做的是用另一个数字代替第四个数字。此替换作为变量传递(即,未知且未硬编码):

^{pr2}$

所以,我想要一段代码,比如:

newline = re.sub(r'\d+\s\d+\s\d+\s(\d+)\s\d+\s\d+\s',num_replace_str,line)

这将产生如下结果:

print newline
78 170 180 50 2 3

我只想用字符串num_replace_str(在本例中num_replace_str='50')替换第4个数字,我已经尝试过分组()。在


Tags: 代码re编码格式linenewline数字整数
3条回答

似乎您可以将字符串拆分,插入新值并将其' '.join放回一起。在

split = line.split()
split[3] = str(50)
new_line = ' '.join(split)

示例:

^{pr2}$

这并不是说它不能保存连续的空格。如果这是一个关键要求,那么regex可能是一个更好的选择。在

您需要对要保留的行部分使用捕获组,而不是要替换的部分。然后通过使用\n复制第n个组的匹配,将它们复制到替换字符串中。在

re.sub(r'^((?:\d+\s+){3})\d+', r'\1' + num_replace_str, line)

您可以使用positive lookahead assertion。在

>>> import re
>>> line = '78 170 180 1 2 3'
>>> num_replace_str = str(50)
>>> newline = re.sub(r'\d+(?=\s\d+\s\d+$)',num_replace_str,line)
>>> print newline
78 170 180 50 2 3

通过外部regex模块

^{pr2}$

相关问题 更多 >