gpt4 book ai didi

python - 单个正则表达式中的多个替换

转载 作者:行者123 更新时间:2023-12-01 03:57:00 27 4
gpt4 key购买 nike

我正在尝试从文件中读取一组数据,以便将其转换为complex。条目的形式为

line='0.2741564350068515+2.6100840481550604*^-10*I\n',

应该呈现为

'(0.2741564350068515+2.6100840481550604e-10j)'.

因此我需要插入一对括号并更改虚数单位和指数表示法的符号。我笨拙的解决方案是单独执行每个替换,

re.sub("\*\^","e",re.sub("[\.]{0,1}\*I","j)",re.sub("(^)","(",line))).strip(),

但这并不完全可读或理智。有没有办法使用单个正则表达式来进行此替换?

最佳答案

看来你根本不需要正则表达式就可以做到:

line='0.2741564350068515+2.6100840481550604*^-10*I\n'
print("({})".format(line.strip().replace("*^", "e").replace("*I", "j")))
# => (0.2741564350068515+2.6100840481550604e-10j)

请参阅IDEONE demo

一个“搞笑”regex way展示如何使用捕获组并使用 lambda 检查替换中捕获的内容:

import re
line='0.2741564350068515+2.6100840481550604*^-10*I\n'
print("({})".format(re.sub(r"(\*\^)|([.]?\*I)", lambda m: "e" if m.group(1) else "j", line.strip())))
# => (0.2741564350068515+2.6100840481550604e-10j)

如果组 1 ((\*\^)) 匹配,则替换为 e,如果组 2 匹配,则替换为 j .

请注意,{0,1} 限制量词的含义与 ? 量词相同 - 1 或 0 次。

关于python - 单个正则表达式中的多个替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37275735/

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