簡體   English   中英

如何在python中將特定索引處的數據從一個列表追加到另一個空列表?

[英]How to append data at specific indexes from one list to another empty list in python?

我是Python編碼的新手。 我想將列表“ myarrayUrl”中的10個特定索引的值附加到另一個空列表“ final”。 索引的值存儲在變量“ ind_pos”中。 當我嘗試附加這些值時,它們將存儲在csv文件的同一行中,並且逗號放在錯誤的位置。 最終列表中存儲值的方式如下:

[array(['Hilton Garden Inn Dubai Al Muraqabat',
   'Al Deyafa Hotel Apartments',
   'Lapita, Dubai Parks and Resorts, Autograph Collection',
   'The Baron Hotel Apartments',
   'Park Inn by Radisson Hotel Apartments Al Rigga',
   'Kempinski Hotel Mall of the Emirates',
   'Premier Inn Dubai International Airport Hotel',
   'Al Kameelia Hotel Dubai', 'ABC Arabian Suites',
   'The Ritz-Carlton Residences, Dubai International Financial Centre'], 
  dtype='<U79')]

它們在csv文件中的顯示方式是(同一行中的所有10個名稱):

Abidos Hotel Apartment - Al BarshaMarriott Executive Apartments Dubai, Green CommunityPullman Jumeirah Lakes Towers Hotel & ResidenceRamee Guestline Hotel Apartment 3The Ritz-Carlton Residences, Dubai International Financial CentreLapita, Dubai Parks and Resorts, Autograph CollectionAl Diar Hotel Apartments - Al BarshaDoubleTree by Hilton Hotel & Residences Dubai - Al BarshaJW Marriott Marquis Hotel DubaiHabtoor Grand Resort, Autograph Collection, A Marriott Luxury & Lifestyle Hotel

下面是我的代碼:

import requests
import re
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
import ssl
import csv
import numpy as np
from bs4 import BeautifulSoup

def connect(self):
    # Add certificate verification
    sock = socket.create_connection((self.host, self.port), self.timeout)

    # Wrap socket using verification with the root certs in
    # trusted_root_certs
    self.sock = ssl_wrap_socket(sock, self.key_file, self.cert_file,
                                cert_reqs=self.cert_reqs,
                                ca_certs=self.ca_certs,
                                server_hostname=self.host,
                                ssl_version=ssl.PROTOCOL_TLSv1)
offset = 0
url = 'https://www.tripadvisor.com/Hotels-g295424-oa' + str(offset) + '-Dubai_Emirate_of_Dubai-Hotels.html#EATERY_LIST_CONTENTS'
index_pages = ('http://www.tripadvisor.com/Hotels-g295424-oa{}-Dubai_Emirate_of_Dubai-Hotels.html#ACCOM_OVERVIEW'.format(i) for i in range(0, 540, 30))
urls = []
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")

for link in soup.find_all('a', {'last'}):
    page_number = link.get('data-page-number')
    last_offset = int(page_number) * 30
    print('last offset:', last_offset)

i=0
myList=[]
myUrl=[]
final=[]
for offset in range(0, last_offset, 30):
    print('--- page offset:', offset, '---')

    url = 'https://www.tripadvisor.com/Hotels-g295424-oa' + str(offset) + '-Dubai_Emirate_of_Dubai-Hotels.html#EATERY_LIST_CONTENTS'

    r = requests.get(url)
    soup = BeautifulSoup(r.text, "html.parser")

    for link in soup.find_all('a', {'property_title'}):
            iurl='https://www.tripadvisor.com/' + link.get('href')
            page = requests.get(iurl).text
            c=page.find("pool")
            myList.append(c)
            print (link.text)
            myUrl.append(link.text)
            print (page.find("pool") )


myarray = np.asarray(myList)   
myarrayUrl = np.asarray(myUrl)

ind_pos= np.argsort(myarray)[-10:]
print (myarrayUrl[ind_pos])
myarrayUrl.tolist();   

#for i in ind_pos:
   # T.append(L[i])
final.append(myarrayUrl[ind_pos])
print (final)

with open ('HotelReviewData.csv','w') as file:
    writer=csv.writer(file)
    for row in final:
        writer.writerow(row)

如何在最終列表中附加值,以便將它們存儲在csv文件的另一行中?

您可以將文件打開為csvfile 否則,您需要通過將代碼的最后一行更改為以下內容,在每行之后顯式附加行終止符:

writer.writerow(row + '\r\n')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM