如何使用正则表达式匹配python列表

2024-04-28 15:58:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python ["john","doe","1","90"]["prince","2","95"]中有以下列表。第一个数字列是field:id,第二个数字字段是score。我想用python中的re来解析字段并打印。到目前为止,我只知道如何分割逗号字段。有人能帮忙吗


Tags: reidfield列表数字johnscore逗号
2条回答

这里不需要正则表达式。只需使用isinstance()和切片即可

这应该是你想要的:

a_list = ['john','doe','1','90']

for i, elem in enumerate(a_list):
    try:
        elem = int(elem)
    except ValueError, e:
        pass
    if isinstance(elem, int):
        names_part = a_list[:i-1]
        id_and_score = a_list[i-1:]

        print 'name(s): {0}, '.format(' '.join(names_part)), 'id: {id}, score: {score}'.format(id=id_and_score[0], score=id_and_score[1])

不过,如果我们知道您的数据来源,或者如果有一种方法来预测字段位置,那么这个解决方案可能会有所改进—您可以按照建议将列表转换为dict。如果你提取了你的数据,你可以考虑建立一个dict而不是一个列表,这样你就不用做上面的事情了

你最好用字典而不是正则表达式(我不知道你在这里怎么用):

{'name': 'John Doe', 'id': '1', 'score': '90'}

或者最好使用数字:

{'name': 'John Doe', 'id': 1, 'score': 90}

相关问题 更多 >