gpt4 book ai didi

python - 使用正则表达式执行分配属性

转载 作者:行者123 更新时间:2023-12-04 04:04:45 24 4
gpt4 key购买 nike

我正在尝试使用正则表达式更改顺序,但遇到了替代组的问题。

Example: 1a,1b,1c ABC
Output: ABC*1a,ABC*1b,ABC*1c

Example: 1a,2b ABC
Output: ABC*1a,ABC*2b

Example: 1a ABC
Output: ABC*1a

到目前为止我所拥有的是:

re.sub(r'((\d\W,\d\W,\d\W)|(\d\W,\d\W)|(\d\W))()(\d\W\d\W\d\W)',r'\3\*\1',string)

关于如何处理可能的子组有什么想法吗?

最佳答案

我看到问题是关于正则表达式的,但是正如@Ronald 所说,使用它们来完全交换内容会相当困难。这是一个示例,您可以如何使用它们并将它们与 python 方法结合起来以获得您正在寻找的结果:

import re

def parse_string_1(str_):
prog1 = re.compile('([\d\w]*)[\,\s]')
prog2 = re.compile('\s(\w*)')

constant = re.findall(prog2, str_)[0]
multipliers = re.findall(prog1, str_)

result = []
for multiplier in multipliers:
result.append(f"{constant}*{multiplier}")
return ','.join(result)

parse_string_1("1a,1b,1c ABC")
>>> ABC*1a,ABC*1b,ABC*1c
parse_string_1("1a,2b ABC")
>>> ABC*1a,ABC*2b
parse_string_1("1a ABC")
>>> ABC*1a

如果你可以完全离开它们,你可以这样做:

def parse_string_2(str_):
result = []
multipliers, constant = str_.split(' ')
for multiplier in multipliers.split(','):
result.append(f"{constant}*{multiplier}")
return ','.join(result)

parse_string_2("1a,1b,1c ABC")
>>> ABC*1a,ABC*1b,ABC*1c
parse_string_2("1a,2b ABC")
>>> ABC*1a,ABC*2b
parse_string_2("1a ABC")
>>> ABC*1a

关于python - 使用正则表达式执行分配属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62717059/

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