在python中从字符串中分隔十进制数

2024-10-04 03:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有字符串,数据不正确

我需要在数字的末尾划界

字符串为In moreH$450pacific much liquormk H2.55pacific Z,H430, 430

数字之间可能有逗号(,)

我需要分成两部分

in more H - $450
pacific much liquormk H-2.55
pacific Z- H430, 430"

我是python新手,所以请指导我使用正则表达式


Tags: 数据字符串inmore数字逗号末尾新手
2条回答

您可以在re.findall中使用此正则表达式:

>>> s = "In moreH$450pacific much liquormk H2.55pacific Z,H430, 430"
>>> print ( re.findall(r'.*?\d+(?:\s*[,\.]\s*\d+)*', s) )
['In moreH$450', 'pacific much liquormk H2.55', 'pacific Z,H430, 430']

正则表达式详细信息:

  • .*?\d+:匹配0个或多个字符,后跟1+个数字
  • (?:\s*[,\.]\s*\d+)*:后跟dor或逗号,并带有周围的空格,后跟1+个数字

我会在这里使用re.findall

inp = "In moreH$450pacific much liquormk H2.55pacific Z,H430, 430"
parts = re.findall(r'.*?\d+(?:\.\d+)?(?!,?\s*\d)', inp)
print(parts)

这张照片是:

['In moreH$450', 'pacific much liquormk H2.55', 'pacific Z,H430, 430']

正则表达式的策略是匹配所有内容,直到第一个数字内容未通过负前瞻。逻辑如下:

.*?            match all content up and including the nearest
\d+(?:\.\d+)?  number, possibly with a decimal component
(?!,?\s*\d)    which is NOT followed by either a comma, whitespace, and another number OR
               just another number

相关问题 更多 >