在Python中将格式化的字符串转换为数组

时间:2017-03-27 09:11:37

标签: python arrays string-formatting

我有以下字符串

myString = "cat(50),dog(60),pig(70)"

我尝试将上面的字符串转换为2D数组。 我想得到的结果是

myResult = [['cat', 50], ['dog', 60], ['pig', 70]]

我已经知道使用遗留字符串方法解决的方法,但它非常复杂。所以我不想使用这种方法。

# Legacy approach
# 1. Split string by ","
# 2. Run loop and split string by "(" => got the <name of animal>
# 3. Got the number by exclude ")".

任何建议都会表示赞赏。

2 个答案:

答案 0 :(得分:6)

您可以使用re.findall方法:

>>> import re
>>> re.findall(r'(\w+)\((\d+)\)', myString)
[('cat', '50'), ('dog', '60'), ('pig', '70')]

如果你想要RomanPerekhrest注意到的列表列表,请将其转换为列表理解:

>>> [list(t) for t in re.findall(r'(\w+)\((\d+)\)', myString)]
[['cat', '50'], ['dog', '60'], ['pig', '70']]

答案 1 :(得分:2)

使用re.split()函数的替代解决方案:

import re
myString = "cat(50),dog(60),pig(70)"
result = [re.split(r'[)(]', i)[:-1] for i in myString.split(',')]

print(result)

输出:

[['cat', '50'], ['dog', '60'], ['pig', '70']]

r'[)(]' - pattern,将括号视为分割

的分隔符

[:-1] - 包含除最后一个项目之外的所有项目的切片(空格' '