Python - 如何将字符串中的字符和整数分隔为子字符串?

时间:2014-03-26 20:03:02

标签: python string integer character substring

我正在编写一个允许用户创建探险套件列表的程序。我需要配置的最后一个区域是将每人的设备数量(从保存的探险中)乘以探险的人数,以便为用户提供他们需要的设备数量。

然而,问题是,当用户输入他们想要的特定设备的数量时,该单位会按金额计算。 例如,在文件中,它看起来像这样: 水 100毫升

所以,我需要乘以" 100"一个数字,但需要将它与" ml"第一。 我没有必要显示的代码,因为我不知道从哪里开始。

注意:我使用的是python 3.2,我可以很容易地改变一些语法,但任何额外的努力来改变它都会很棒,但不要太烦恼:)

2 个答案:

答案 0 :(得分:2)

使用re.sub

>>> import re
>>> s = "Water 100ml"
>>> re.sub(r'\d+', lambda m: str(int(m.group())*5), s)
'Water 500ml'

答案 1 :(得分:0)

您可以使用re.match提取值:

>>> import re
>>> item = "Water\n100ml\n"
>>> re.match(r"([0-9]+)([a-z]+)", item.split()[1], re.I).groups()
('100', 'ml')

然后做你需要做的任何事情。


修改 对于评论中的第二点,如果您有指定格式的文件,则可以执行以下操作:

with open('file.txt') as f:
    data = f.readlines()
    items = list(zip(data[0::2], data[1::2]))  # A list of items like ('Water', '100ml')

然后你可以使用前一个正则表达式list中的每个项目,除了some_item[1]作为要搜索的字符串;其中some_item是例如迭代期间的当前值。