2017-01-18 3 views
0

私は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ファイルの別の行に格納する方法を教えてください。

答えて

0

csvfileとしてファイルを開くことができます。それ以外の場合は、コードの最後の行を次のように変更して、各行の後に行終端記号を明示的に追加する必要があります。

writer.writerow(row + '\r\n') 
関連する問題