代码之家  ›  专栏  ›  技术社区  ›  assertcarl

将for循环中的字符串转换为列表

  •  0
  • assertcarl  · 技术社区  · 8 年前

    我正试图创建一个包含双引号中所有字符串的列表,到目前为止,我已经做到了这一点。

    matches = ['8 "app/Http/Controllers/Controller.php" line 1', '9 "app/Http/Controllers/PostController.php" line 1']
    
    if len(matches) > 1:
        for match in matches:
            matches = re.findall(r'\"(.+?)\"', match)
            print(matches[0])
    

    它输出这个

    app/Http/Controllers/Controller.php
    app/Http/Controllers/PostController.php
    

    我想把这些字符串变成一个列表,所以看起来像这样

    ['app/Http/Controllers/Controller.php','app/Http/Controllers/PostController.php']
    

    它也应该是动态的,因为在双引号中可以有两个以上的字符串。

    怎么能做到?

    2 回复  |  直到 8 年前
        1
  •  3
  •   blhsing    8 年前

    print append

    import re
    matches = ['8 "app/Http/Controllers/Controller.php" line 1', '9 "app/Http/Controllers/PostController.php" line 1']
    
    output = []
    if len(matches) > 1:
        for match in matches:
            matches = re.findall(r'\"(.+?)\"', match)
            output.append(matches[0])
    
    print(output)
    

    ['app/Http/Controllers/Controller.php', 'app/Http/Controllers/PostController.php']
    
        2
  •  1
  •   The Matt    8 年前

    list comprehension

    import re
    matches = ['8 "app/Http/Controllers/Controller.php" line 1', '9 "app/Http/Controllers/PostController.php" line 1']
    
    results = [re.findall(r'\"(.+?)\"', match)[0] for match in matches]
    

    ['app/Http/Controllers/Controller.php', 'app/Http/Controllers/PostController.php']