将格式化后的字符串转换为 Python 中的数组
Convert the formatted string to array in Python
我有以下字符串
myString = "cat(50),dog(60),pig(70)"
我尝试将上面的字符串转换为二维数组。
我想要得到的结果是
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 ")".
如有任何建议,我们将不胜感激。
您可以使用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']]
使用 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'[)(]'
- 模式,将括号视为拆分的分隔符
[:-1]
- 切片包含除最后一个以外的所有项目(为空 space ' '
)
我有以下字符串
myString = "cat(50),dog(60),pig(70)"
我尝试将上面的字符串转换为二维数组。 我想要得到的结果是
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 ")".
如有任何建议,我们将不胜感激。
您可以使用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']]
使用 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'[)(]'
- 模式,将括号视为拆分的分隔符
[:-1]
- 切片包含除最后一个以外的所有项目(为空 space ' '
)