我有以下字符串
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 ")".
任何建议都会表示赞赏。
答案 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]
- 包含除最后一个项目之外的所有项目的切片(空格' '
)