gpt4 book ai didi

Python正则表达式将字符串拆分为数字和文本/符号

转载 作者:行者123 更新时间:2023-11-28 21:42:43 31 4
gpt4 key购买 nike

我想将一个字符串拆分为数字部分和文本/符号部分我当前的代码不包含负数或小数,并且表现得很奇怪,在输出的末尾添加了一个空列表元素

import re
mystring = 'AD%5(6ag 0.33--9.5'
newlist = re.split('([0-9]+)', mystring)
print (newlist)

当前输出:

['AD%', '5', '(', '6', 'ag ', '0', '.', '33', '--', '9', '.', '5', '']

期望的输出:

['AD%', '5', '(', '6', 'ag ', '0.33', '-', '-9.5']

最佳答案

您的问题与以下事实有关:您的正则表达式捕获一个或多个数字并将它们添加到结果列表中,并且数字用作分隔符,考虑前后的部分。因此,如果末尾有数字,则拆分结果会将末尾的空字符串添加到结果列表中。

您可以使用正则表达式拆分,该正则表达式匹配带有可选减号的 float 或整数,然后删除空值:

result = re.split(r'(-?\d*\.?\d+)', s)
result = filter(None, result)

要将负数/正数与指数匹配,请使用

r'([+-]?\d*\.?\d+(?:[eE][-+]?\d+)?)'

-?\d*\.?\d+ 正则表达式匹配:

  • -? - 一个可选的减号
  • \d* - 0+ 位
  • \.? - 一个可选的文字点
  • \d+ - 一个或多个数字。

关于Python正则表达式将字符串拆分为数字和文本/符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43237338/

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