有没有一种方法可以替换字符串末尾,从给定的子字符串开始?

4

我有一个字符串banana | 10,想要用9替换从| 到字符串末尾的所有内容。 我想要的输出应该是banana | 9。 我应该怎么做呢? 我已经研究了.replace().split()和将字符串转换为字符列表,然后循环遍历它们,直到找到应该被替换的位,但是就是想不出来。

6个回答

5
我建议你使用re模块(正则表达式模块):
import re
myString = "banana | 10"
re.sub(r"\|.+", r"| 9", myString)

输出

banana | 9

3
yourStr = 'banana | 10'
yourStr = yourStr[:yourStr.index('|') + 2] + '9'
print(yourStr)

香蕉 | 9

其他的正则表达式方案更加优雅,但这个方案更容易理解。你可以决定哪个更适合你。


每当数字不是两位数时,这将会出错。 - user15860111

2

您可能希望使用split()方法...这对于您理解该方法将会很有帮助。

sep = ' | '
new_value = 9
s ='banana | 10'.split(sep=sep)
print( s[0] + sep + str(new_value))

2
也许这个可以起作用。 代码:
string = 'banana | 10 ';
pos = string.find('|')
left_string = string[:pos+2];
final_string = left_string + '9'
print(final_string)

1
你可以捕获在组1中后面跟有可选空格但没有换行符的|,并匹配要删除的其余部分所在的整行。

在替换中使用捕获组1,后跟9

import re

s = "banana | 10"
pattern = r"(\|[^\S\n]*).*"
print(re.sub(pattern, r"\g<1>9", s))

输出

banana | 9

如果您想匹配数字和至少1个或多个空格,则可以使用以下内容:
(\|[^\S\n]+)\d+

查看正则表达式101演示


1
逻辑可能需要改进,但类似这样的代码可能有效:
text = "banana | 10"

if "|" in text:
   tmp = text.split("|")
   print (tmp[0] + "| 9")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接