我有一个字符串,我需要拆分/切片并设置为不同的变量。这是一个示例字符串:
Uploaded 09-09 2015, Size 2.05 GiB, ULed by USERX
我需要最终输出类似于:
date = '09-09 2015' ; size = '2.05' ; user = 'USERX'
这是我目前使用的代码,变量'string'代表原始字符串:
date, size, user = string.split(',')
date = date.split()[1], date.split()[2]
size = size.split()[1]
user = user.split()[2]
这样可行,但我不禁觉得代码很痛苦。有一个更好的方法吗?非常感谢,您的代码可以优雅且无错误。
答案 0 :(得分:2)
您可以使用re.findall
:
import re
s = 'Uploaded 09-09 2015, Size 2.05 GiB, ULed by USERX'
results = re.findall('(?<=Uploaded\s)[\d\-\s]+|(?<=Size\s)[\d\.]+|(?<=ULed by\s)\w+$', s)
d = dict(zip(['date', 'size', 'user'], results))
输出:
{'date': '09-09 2015', 'size': '2.05', 'user': 'USERX'}
答案 1 :(得分:1)
另一个使用mapping
词典:
import re
string = "Uploaded 09-09 2015, Size 2.05 GiB, ULed by USERX"
mappings = {'Uploaded': 'date', 'Size': 'size', 'by': 'user'}
rx = re.compile(r'(\w+)\s*\b([-. A-Z0-9]{2,})\b')
result = {mappings[m.group(1)]: m.group(2).strip()
for m in rx.finditer(string)}
print(result)
这会产生
{'date': '09-09 2015', 'size': '2.05', 'user': 'USERX'}
答案 2 :(得分:1)
你可能想尝试python的命名组捕获:
system(1, @args)