有没有办法从给定的子字符串开始替换字符串的结尾
Is there a way to replace the end of a string, starting at a given substring
我有字符串 banana | 10
,想用 9
替换从 |
到字符串末尾的所有内容。我想要的输出是 banana | 9
。我怎么能做到这一点?我查看了 .replace()
、.split()
并将字符串转换为字符列表,并遍历它们直到找到应该替换的位,但就是无法弄清楚。
我建议你使用 re
模块(正则表达式模块):
import re
myString = "banana | 10"
re.sub(r"\|.+", r"| 9", myString)
输出
banana | 9
也许这行得通。
代码:
string = 'banana | 10 ';
pos = string.find('|')
left_string = string[:pos+2];
final_string = left_string + '9'
print(final_string)
yourStr = 'banana | 10'
yourStr = yourStr[:yourStr.index('|') + 2] + '9'
print(yourStr)
banana | 9
其他 regex
解决方案更优雅,但这更具可读性。你可以决定什么更适合你。
您可以在第 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+
看到一个regex 101 demo
您可能想使用 split() 方法...
这将有助于您理解该方法。
sep = ' | '
new_value = 9
s ='banana | 10'.split(sep=sep)
print( s[0] + sep + str(new_value))
逻辑或许可以改进,但像这样的东西可能会起作用:
text = "banana | 10"
if "|" in text:
tmp = text.split("|")
print (tmp[0] + "| 9")
我有字符串 banana | 10
,想用 9
替换从 |
到字符串末尾的所有内容。我想要的输出是 banana | 9
。我怎么能做到这一点?我查看了 .replace()
、.split()
并将字符串转换为字符列表,并遍历它们直到找到应该替换的位,但就是无法弄清楚。
我建议你使用 re
模块(正则表达式模块):
import re
myString = "banana | 10"
re.sub(r"\|.+", r"| 9", myString)
输出
banana | 9
也许这行得通。 代码:
string = 'banana | 10 ';
pos = string.find('|')
left_string = string[:pos+2];
final_string = left_string + '9'
print(final_string)
yourStr = 'banana | 10'
yourStr = yourStr[:yourStr.index('|') + 2] + '9'
print(yourStr)
banana | 9
其他 regex
解决方案更优雅,但这更具可读性。你可以决定什么更适合你。
您可以在第 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+
看到一个regex 101 demo
您可能想使用 split() 方法... 这将有助于您理解该方法。
sep = ' | '
new_value = 9
s ='banana | 10'.split(sep=sep)
print( s[0] + sep + str(new_value))
逻辑或许可以改进,但像这样的东西可能会起作用:
text = "banana | 10"
if "|" in text:
tmp = text.split("|")
print (tmp[0] + "| 9")