我正在编写一个允许用户创建探险套件列表的程序。我需要配置的最后一个区域是将每人的设备数量(从保存的探险中)乘以探险的人数,以便为用户提供他们需要的设备数量。
然而,问题是,当用户输入他们想要的特定设备的数量时,该单位会按金额计算。 例如,在文件中,它看起来像这样: 水 100毫升
所以,我需要乘以" 100"一个数字,但需要将它与" ml"第一。 我没有必要显示的代码,因为我不知道从哪里开始。
注意:我使用的是python 3.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
是例如迭代期间的当前值。