将数字与由$符号分隔的字符串分隔吗?
我已经采取了字符串,其中数字将用逗号,
结束程序如下图所示:
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'
有很多方法可以实现这一目标。一些:
- 地带标点符号
- 使逗号可选的(我的最爱)
- 解析手动,敛的[0-9] + \ [0-9] {2}
2号是很容易给你的例子..只需添加?
(以前RE条款可选)以逗号:
lis=re.split('\s*\$\s*|\s*\,?\s*', s)[:-1]
感谢你的时间和精力保罗.....但是你的代码导致输出为:['natraj' ,'打','camlin','box']和另一个列表为['12',100.25,10]我想要的是:第一个列表为..... ['natraj 12打','camlin 10 box '],第二个列表为['100.25','1250.50'] – 2014-09-29 14:23:45
只需将非货币标记组合到字符串中,并将货币标记组合到列表中。您应该可以通过前面的“$”轻松找到它。想想看,你可以分割空间并遍历令牌 - 不需要正则表达式。 – PaulProgrammer 2014-09-29 14:38:37
yup @PaulProgrammer ....我会尝试 – 2014-09-29 14:44:47
你可以牛逼RY下面的正则表达式来单独编号和说明部分,
(?P<Numbers>\$\d+(?:\.\d+)?,)|(?P<Description>\w+(?: \w+)*)
从捕获组中删除逗号,如果你不想要它。
(?P<Numbers>\$\d+(?:\.\d+)?)|(?P<Description>\w+(?: \w+)*)
avinash ji请....... python code ..... ur接近解决方案...但给我的python代码...即时通讯愚蠢在正则表达式 – 2014-09-29 14:27:43
ji我试着ji ... – 2014-09-29 14:31:17
在此先感谢@avinashraj – 2014-09-29 14:37:33
尝试把字符串的字符在列表中,然后使用.delete函数从列表中删除逗号,并在返回输出列表。希望这有助于。:)。 \
list_of_s = [s]
list_of_s.delete(',')
您是否尝试过修改正则表达式而不需要逗号? – jonrsharpe 2014-09-29 14:12:47
所以你想分离出所有的价格?这里你想要的输出是什么? – thegrinner 2014-09-29 14:13:05
您的预期产出是? – 2014-09-29 14:13:12