gpt4 book ai didi

python - 如何用另一个列表中的数字替换字符串中的数字?

转载 作者:行者123 更新时间:2023-12-01 07:05:17 26 4
gpt4 key购买 nike

我有一个包含数字的文本字符串。另外,我有一份号码 list 。我想按照字符串和列表的顺序将字符串中的数字替换为列表中的数字。

通过使用正则表达式,我从字符串中提取了现有的数字,并将它们传递到列表中,现在我在原始数字和备用数字之间有了匹配。但目前还不清楚如何找到调整并按顺序进行替换。

通过这一行,我从给定的字符串中提取数字:

    list_of_numbers_in_string = [int(x) for x in re.findall('\d+', str)]

现在我想知道如何使用它,或者另一种方法来从这个输入中获得所需的结果:

    data = 'readingOrder {index:24;} person {offset:0; length:7;} textStyle {offset:0; length:7; underlined:true;} place {offset:52; length:8;} textStyle {offset:52; length:8; underlined:true;}'
new_numbers = [24, 0, 12, 0, 12, 58, 14, 58, 14]

得到这个输出:

    corrected_data = 'readingOrder {index:24;} person {offset:0; length:12;} textStyle {offset:0; length:12; underlined:true;} place {offset:58; length:14;} textStyle {offset:58; length:14; underlined:true;}'

最佳答案

接受的答案实际上是不正确的(现已删除)。 data.replace() 将替换第一次出现的数字,该数字并不总是正确的。例如,当您尝试将 8 替换为 14 时,它实际上将 58 替换为 514。

这是我的解决方案:

import re

data = 'readingOrder {index:24;} person {offset:0; length:7;} textStyle {offset:0; length:7; underlined:true;} place {offset:52; length:8;} textStyle {offset:52; length:8; underlined:true;}'
new_numbers = [24, 0, 12, 0, 12, 58, 14, 58, 14]

offset = 0
for index, match in enumerate(re.finditer('\d+', data)):
data = data[:match.start() + offset] + str(new_numbers[index]) + data[match.end() + offset:]
offset += len(str(new_numbers[index])) - match.end() + match.start()

关于python - 如何用另一个列表中的数字替换字符串中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58470775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com