繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM