Python 如何用另一个数字替换字符串中的数字?

Python 如何用另一个数字替换字符串中的数字?,python,string,replace,Python,String,Replace,我试图用另一个数字替换字符串中的一个数字。例如,我有一个字符串“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): li

我试图用另一个数字替换字符串中的一个数字。例如,我有一个字符串“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()
这样的输出是有意义的,因为我将得到类似于[''',24F\n]的结果。我现在需要把24改成31,然后把它放回原来的字符串中


如果有更好的方法,请随时告诉我。我对python非常陌生,我在网上找到的所有可用的搜索/替换函数似乎都不能满足我的需要。谢谢大家!

这不是一般性的,因为我不确定其余的数据是什么样子的,但类似的东西可能会起作用:

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)
这将产生相同的字符串列表,但最后一个字母前的数字会根据需要进行修改


我希望这对你有帮助

假设模式是
\+多个数字
,您可以用regex替换它

import re

re.sub(r"_(\d+)", lambda r: '_'+str(int(r.group(1)) + 7),'APU12_24F')

我假设你需要在一个下划线后面的数字上加七。我希望,此功能将有所帮助

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)