将数字与用$符号分隔的字符串分开?

2021-11-29 23:12:38 发布

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

我使用了一个字符串,其中数字以逗号结尾,程序如下所示:

import re 
s = 'natraj 12 dozen $100.25, camlin 10 box $1250.50,' 
lis = re.split('\s*\$\s*|\s*\,\s*', s)[:-1] 
print(lis)
description = lis[0::2] 
amount = lis[1::2] 
print(description) 
print(amount) 

输出:

description = ['natraj 12 dozen','camlin 10 box'] and
amount = ['100.25',1250.50']

amount列表不应包含$符号)

现在我想要与上面相同的输出:但是现在输入字符串不包含逗号

s = 'natraj 12 dozen $100.25 camlin 10 box $1250.50' 
3条回答
网友
1楼 ·

实现这个目标有很多方法。一些:

  1. 条形标点符号
  2. 使逗号可选(我的最爱)
  3. 手动解析,获取[0-9]+\.[0-9]{2}的集群

上面的第二个例子很简单。。只需在逗号处添加?(前面的RE子句可选):

lis=re.split('\s*\$\s*|\s*\,?\s*', s)[:-1] 
网友
2楼 ·

你可以试试下面的正则表达式来区分数字和描述部分

(?P<Numbers>\$\d+(?:\.\d+)?,)|(?P<Description>\w+(?: \w+)*)

DEMO

如果不需要,请从捕获的组中删除逗号。你知道吗

(?P<Numbers>\$\d+(?:\.\d+)?)|(?P<Description>\w+(?: \w+)*)

DEMO

网友
3楼 ·

尝试将字符串的字符放入列表中,然后使用.delete函数从列表中删除逗号,并在输出中返回列表。希望这有帮助。\你知道吗

    list_of_s = [s]
    list_of_s.delete(',')

相关问题