Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将for循环中的字符串转换为列表_Python - Fatal编程技术网

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

Python 将for循环中的字符串转换为列表,python,Python,我试图创建一个包含双引号中所有字符串的列表,到目前为止我已经做到了 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)

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

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个以上的字符串


如何做到这一点?

您可以将
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']

您可以将
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']
您可以使用更简洁地生成列表

在python中,列表理解允许“[x代表x(1,4,3,2)]格式

因此,这将导致这个代码

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']

您可以使用它更简洁地生成列表

在python中,列表理解允许“[x代表x(1,4,3,2)]格式

因此,这将导致这个代码

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']

我知道这可能是一个打字错误,但我真的希望“隐蔽字符串”是像其他对象一样的东西,但在封面下它们实际上是字符串,等待着被召唤去偷偷地做一些为祖国服务的事情,而且…我刚刚描述了所有的tkinter。作为一个补充说明,为什么你要用
findall
来获得所有的匹配,但是除了第一个之外,其他的都扔掉了?这是一个像Vim的缓冲区一样的Supreme插件。顶部匹配项的内容是从显示我打开的文件的输出面板中动态拉入的,然后当我打开显示输入面板并键入Http时,例如,我想存储所有匹配项,以便我可以按tab键循环浏览它们,然后按enter键将我带到该文件。我知道这可能是一个输入错误,但我真的希望“隐藏字符串“这些东西表现得像其他物体,但在封面下它们实际上是弦,等待着被召唤偷偷地做一些弦的事情来为他们的祖国服务,而且……我刚才描述了所有的特金特。作为旁注,你为什么要用
findall
来获得所有的比赛,但是,除了第一个,其他的都扔掉了吗?这是一个像Vim的缓冲区一样的Supreme插件。顶部匹配的内容从显示我打开的文件的输出面板中动态拉入,然后当我打开“显示输入”面板并键入Http时,例如,我想存储所有匹配,以便我可以按tab键循环浏览它们,然后按enter键将我带到该文件。感谢您提供了另一种实现方法,我同意这是一个更好的方法。感谢你提供了另一种实现这一目标的方法,我同意这是一个更好的方法。