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

Python-如何将字符串中的字符和整数分割成子字符串?,python,string,integer,character,substring,Python,String,Integer,Character,Substring,我正在编写一个程序,允许用户创建探险装备清单。我需要配置的最后一个区域是将每人的设备数量(来自已保存的远征)乘以参加远征的人数,以向用户提供他们需要的设备数量 然而,问题是,当用户输入他们想要的某一设备的数量时,该单位与数量相符。 例如,在文件中,它如下所示: 水 100毫升 所以,我需要将“100”乘以一个数字,但首先需要将它与“ml”分开。 我没有需要显示的代码,因为我不知道从哪里开始 注意:我使用的是python 3.2,我可以很容易地更改一些语法,但是任何额外的努力都会很好,但是不要太麻

我正在编写一个程序,允许用户创建探险装备清单。我需要配置的最后一个区域是将每人的设备数量(来自已保存的远征)乘以参加远征的人数,以向用户提供他们需要的设备数量

然而,问题是,当用户输入他们想要的某一设备的数量时,该单位与数量相符。 例如,在文件中,它如下所示: 水 100毫升

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

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

用于此:

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

您可以使用
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')

然后,您可以对该
列表中的每个项目使用前面的正则表达式,但
某些项目[1]
除外,作为要搜索的字符串;其中
some_item
是迭代过程中的当前值。

woa,感谢您的快速回复!是的,这很有效。非常感谢:)请注意-这与“组”中的每个数字都匹配。如果项目名称中碰巧有一个数字字符,那么它也会相乘@Alex Thornton的解决方案确保返回的regex项至少以一个数字开头,以防止出现某些问题,但当项名称本身以任何数字开头时,它仍然失败。使用时发现问题,.txt文件中的行不是“Water 100ml”,该网站阻止我输入段落,因此,文件中的文本是:“水\n100ml\n”。另一个因素(这是我能做的,但对于更短、更高效的代码,我认为经验更好的人会有更好的方法)是文件中会有多个项目,比如:“Water\n100ml\nRope\n1m…etc”@wizton
“Water\n100ml\n”。split()
仍然可以获得这两个项目。是的,当我按下AddComment时,我意识到这应该没问题,然后看到我的代码中有一个错误,但第二个问题是窃听me@wizton请参见编辑。这就是你可以每两行分组的方式。现在我开始把它放到我的完整代码中,我发现了一个错误:“ZIP不能下标”,这是当我浏览列表时,在每一行上使用该正则表达式