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

标签 python regex parsing

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

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/

相关文章:

用于解析干净 URL 并获取其不同组件的 Java 库/类

c - 解析和嵌套指针

python - Numpy:高级索引的转置结果

python - 如何组合两个音频并在机器学习中训练它们

regex - 使用 sed 提取特定单词

python - 在 Python 中的字符前添加零

python - 如何将 sklearn 管道转换为 pyspark 管道?

python - 广播 numpy 数组的背后发生了什么

regex - Powershell:如果正则表达式不匹配,则保留项目

php - 在 PHP 中解析多字节字符串