我有以下数据的列表:
["asdf mkol ghth", "dfcf 5566 7766", "7uy7 jhjh ffvf"]
我想在python中使用正则表达式来获取像这样的元组列表
[("asdf", "mkol ghth"),("dfcf", "5566 7766"),("7uy7", "jhjh ffvf")]
我尝试使用re.split,但出现错误,提示要解包的值太多。以下是我的代码:
logTuples = [()]
for log in logList:
(logid, logcontent) = re.split(r"(\s)", log)
logTuples.append((logid, logcontent))
答案 0 :(得分:0)
正则表达式在这里过大了:
l = ["asdf mkol ghth", "dfcf 5566 7766", "7uy7 jhjh ffvf"]
lst = [tuple(i.split(maxsplit=1)) for i in l]
print(lst)
打印:
[('asdf', 'mkol ghth'), ('dfcf', '5566 7766'), ('7uy7', 'jhjh ffvf')]
答案 1 :(得分:0)
从文档中:
https://docs.python.org/3/library/re.html
\ s
对于Unicode(str)模式:匹配Unicode空格字符 (其中包括[\ t \ n \ r \ f \ v]以及许多其他字符,用于 例如许多印刷术规则规定的不间断空间 语言)。如果使用ASCII标志,则仅匹配[\ t \ n \ r \ f \ v]。
有2个空格,因此有3个项目。
如果您的所有日志条目都有3个项目,并以空格分隔,并且您始终将其组织为(1,2 +''+ 3),则无需使用正则表达式来格式化它们:>
logtuples = []
for log in loglist:
splitlog = log.split(" ") #3 total elements
logtuples.append (splitlog[0], splitlog[1] + " " + splitlog[2])