Python 在多行字符串中替换

标签 python string

我的一个模块 (t_mesg.py) 有一个多行字符串:

tm = """
this
is currently
a
test
message
"""

我将其导入到另一个模块中,我需要用其他模块替换字符串的某些部分。但是,在导入时,换行符也会出现,因此 tm.replace(...) 将不起作用。

>>> from t_mesg import tm
>>> tm
'\nthis\nis \na\ntest\nmessage\n'

如果我需要处理这个导入的字符串以将“is”更改为“is not”,我将如何处理,以便字符串看起来像这样?

tm = """
this
is not currently
a
test
message
"""

TL;DR - 我如何执行忽略换行符的替换?

最佳答案

基本上您想要在字符串中执行单词替换。您可以使用正则表达式和单词边界来做到这一点,不管换行与否:

导入报告

s = "this\n is \n a good \n question"
s = re.sub(r"\bis\b","is not",s)
print(s)

结果:

this
 is not 
 a good 
 question

你可以用这个恢复(这允许在两个单词之间出现更多的换行符并保留它们)

s = re.sub(r"\bis\b(\s+)\bnot\b",r"is\1",s)
print(s)

打印:

this
 is 
 a good 
 question

更进一步,你可以引入标点符号和其他非字母的东西,使用 \W 你仍然可以管理:

s = "this\n is - not - \n a good \n question"
s = re.sub(r"\bis(\W+)not\b",r"is\1",s)
print(s)

打印(“not”已经消失但之前的破折号没有):

this
 is -  - 
 a good 
 question

关于Python 在多行字符串中替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52427538/

相关文章:

java - 如何将 ArrayList<String> 连接到另一个字符串?

python - 类在需要新实例的地方保留以前的内容

python - 使用 3 行作为值创建字典

python - Sklearn 字符串的余弦相似度,Python

javascript - 使用 jQuery 时如何为占位符设置 onblur 和 onfocus 字符串

c# - 将列表转换为小字符串

c - 为什么在反向函数中它可以正常工作而不使用 for 循环来处理下一个字符,例如 ( sPtr[ count]( sPtr[ 2],if ( sPtr[ 3]...... 等等)

python - 判断目录是否在 git 控制下

python - 使用 Python 生成 Amazon S3 CORS 签名

python - 如何从字符串中获取项目的值?