[英]How can I replace a number in a string with another number?
我正在尝试用另一个数字替换字符串中的数字。 例如,我有字符串“APU12_24F”,我想将 7 添加到第二个数字以使其成为“APU12_31F”。
现在我可以通过使用 string.split 找到我感兴趣的号码。
我不知道如何编辑这产生的新字符串。
def main():
f=open("edita15888_debug.txt", "r")
fl = f.readlines()
for x in fl:
if ("APU12" in x):
list_string=split_string(x)
print(list_string);
return
def split_string_APU12(string):
# Split the string based on APU12_
list_string = string.split("APU12_")
return list_string
main()
output 是有道理的,因为我会得到类似 ['', 24F\n] 的东西。 我现在需要将 24 更改为 31,然后将其放回原始字符串。
如果有更好的方法,请随时告诉我。 我对 python 很陌生,我可以在网上找到的所有可用搜索/替换功能似乎都没有做我需要他们做的事情。 谢谢!
假设该模式是_ + multiple digits
,您可以用正则表达式替换它
import re
re.sub(r"_(\d+)", lambda r: '_'+str(int(r.group(1)) + 7),'APU12_24F')
这不是一概而论的,因为我不确定数据的 rest 是什么样的,但也许这样的事情应该有效:
def main():
f=open("edita15888_debug.txt", "r")
fl = f.readlines()
for x in fl:
if ("APU12" in x):
list_string=split_string_APU12(x)
list_string = int(list_string[1].split('F')[0]) + 7
list_string = "APU12_" + str(list_string)
print(list_string)
return
def split_string_APU12(string):
# Split the string based on APU12_
list_string = string.split("APU12_")
return list_string
main()
我假设你的字符串将是格式
APU12_##...F
(其中###... 表示可变数字,F 可以是任何字母,但只有一个)。 如果是这样,您可以执行以下操作:
# Notice the use of context managers
# I would recommend learning about this for working with files
with open('edita15888_debug.txt', 'r') as f:
fl = f.readlines()
new_strings = []
for line in fl:
beg, end = line.split('_')
# This splits the end part into number + character
number, char = int(end[:-1]), end[-1]
# Here goes your operation on the number
number += your_quantity # This may be your +7, for example
# Now joining back everything together
new_strings.append(beg + '_' + str(number) + char)
这将为您生成相同的字符串列表,但最后一个字母之前的数字会根据您的需要进行修改。
我希望这可以帮助你!
我假设您需要在下划线后面的数字上加上七。 我希望,这个 function 会有所帮助
import re
def add_seven_to_number_after_underscore_in_a_string(aString):
regex = re.compile(r'_(\d+)')
match = regex.search(aString)
return regex.sub('_' + str(int(match.group(1)) + 7), aString)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.