python - 在 Python 中对 str 列表进行切片

标签 python slice

我无法让切片正常工作。我有一个如下所示的字符串列表:

['subdomain', 'name', 'url']
['https://www.pedidosya.com.ar/restaurantes/buenos-aires/recoleta/empanadas-delivery?bt=RESTAURANT&page=1', 'Cümen-Cümen Empanadas Palermo', 'https://www.pedidosya.com.ar/restaurantes/buenos-aires/cumen-cumen-empanadas-palermo-menu']
['https://www.pedidosya.com.ar/restaurantes/buenos-aires/recoleta/empanadas-delivery?bt=RESTAURANT&page=1', 'Cümen-Cümen Empanadas - Barrio Norte', 'https://www.pedidosya.com.ar/restaurantes/buenos-aires/cumen-cumen-empanadas-barrio-norte-menu']

我需要的是将“url”保存在新列表中以进一步处理它。

这就是我正在尝试的

for row[3:3] in reader:
   menus = []
   menus.append[row]

但这就是我 print() 时得到的结果:

['https://www.pedidosya.com.ar/restaurantes/buenos-aires/recoleta/empanadas-delivery?bt=RESTAURANT&page=5', 'La Pergola - Recoleta', 'https://www.pedidosya.com.ar/restaurantes/buenos-aires/la-pergola-recoleta-menu']

这是列表的最后一部分。 我需要的是:

menus = ['https://www.pedidosya.com.ar/restaurantes/buenos-aires/cumen-cumen-empanadas-palermo-menu', 'https://www.pedidosya.com.ar/restaurantes/buenos-aires/cumen-cumen-empanadas-barrio-norte-menu']

我已经添加了其余的代码。问题是它不是我想象的 str 列表,而是 type() = '_csv.reader'

完整代码如下:

urls = ["https://www.pedidosya.com.ar/restaurantes/buenos-aires/recoleta/empanadas-delivery",]

with open("output1.csv", 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, delimiter=',')
    writer.writerow(['subdomain', 'name', 'url'])

    for url in urls:
        base = url+ "?bt=RESTAURANT&page="
        page = 1
        restaurants = []

        while True:
            soup = bs(requests.get(base + str(page)).text, "html.parser")

        sections = soup.find_all("section", attrs={"class": "restaurantData"})

        if not sections: break

        for section in sections:
            for elem in section.find_all("a", href=True, attrs={"class": "arrivalName"}):
                restaurants.append({"name": elem.text, "url": elem["href"],})
                writer.writerow([base+str(page),elem.text,elem["href"]])
        page += 1    

#reading
file = open("output1.csv", 'r')
reader = csv.reader(file)

最佳答案

假设您有一个列表列表(即列表周围有一个额外的 [] ),而不是您的问题所暗示的 3 个独立列表,您可以循环遍历列表列表并获取 url每个(元素 2)中的元素附加到新列表。

reader = csvreader or whatever you do to define it
menu = []    
for n, i in enumerate(reader): 
    if(n != 0):
        print(i[2])
        menu.append(i[2])

我已更改代码以使用 csvreader 对象。我们将使用 enumerate 而不是我忽略第一个元素的旧方法。一个奇妙的函数,可以将我们所处的读者元素计算为 n 。那么只要n不为零我们将像以前一样继续。

关于python - 在 Python 中对 str 列表进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56009257/

相关文章:

python - Collat​​z 猜想回文

python - 只能连接 str 不能列表到 str

for-loop - golang 初始化后得到空 slice

go - 存储有关结构的信息/引用

python - 模块代码运行不正确

python - 如何在 R 或 Python 中制作 3d(4 变量)三元(金字塔)图?

java - 使用 python 的 Android 应用程序

objective-c - 如何切片 NSMutableArray

go - struct指针的slice成员未更新

python - 所有切片操作都返回一个新列表?