2024-10-02 22:28:48 发布
网友
对于给定列表的re.sub执行替换的最佳方法是什么?例如:
re.sub
import re some_text = 'xxxxxxx@yyyyyyyyy@zzzzzzzzz@' substitutions = ['ONE', 'TWO', 'THREE'] x = re.sub('@', lambda i: i[0] substitutions.pop(0), some_text) # this doesn't actually work
预期输出为:
您的lambda中有一个语法错误:
>>> substitutions = ['ONE', 'TWO', 'THREE'] >>> re.sub('@', lambda _: substitutions.pop(0), some_text) 'xxxxxxxONEyyyyyyyyyTWOzzzzzzzzzTHREE'
如果不想修改列表,可以将其包装为iterable。在
代码几乎是正确的,需要稍微更正语法错误:
import re some_text = 'xxxxxxx@yyyyyyyyy@zzzzzzzzz@' substitutions = ['ONE', 'TWO', 'THREE'] x = re.sub('@', lambda i: substitutions.pop(0), some_text) # the error was in the lambda function
一种方法(可能还有一种更好的方法,我不太了解Python)是编译正则表达式,然后使用sub代替:
sub
import re some_text = 'xxxxxxx@yyyyyyyyy@zzzzzzzzz@' substitutions = ['ONE', 'TWO', 'THREE'] pattern = re.compile('@') x = pattern.sub(lambda i: substitutions.pop(0), some_text)
Here's a demo.
您的lambda中有一个语法错误:
如果不想修改列表,可以将其包装为iterable。在
^{pr2}$代码几乎是正确的,需要稍微更正语法错误:
一种方法(可能还有一种更好的方法,我不太了解Python)是编译正则表达式,然后使用
sub
代替:Here's a demo.
相关问题 更多 >
编程相关推荐