2017-02-21 139 views
1

我正在嘗試寫入一個列表到文件。並且csv.writer即使沒有引號,也會用引號寫入字符串。我使用.strip將引號取出,當我通過打印進行檢查時,它的打印效果很好。csv.writer寫入帶有引號的字符串而不是實際的字符串

# -*- coding: utf-8 -*- 

''' 
############################################################################## 
Scrap wiki pages with localities in the US. 
''' 

import requests 
from bs4 import BeautifulSoup 
import csv 

# list of all links to scrap: 

linkList = [ 
      'https://en.wikipedia.org/wiki/List_of_cities_and_towns_in_Alabama', 

] 

def scrapSite(): 
    scrap = []  
    for link in linkList: 

     #inside location 
     page = requests.get(link) 
     soup = BeautifulSoup(page.text, "lxml") 

     table = soup.find_all(scope="row") 
     for el in table: 
      title = el.find('a') 
      try: 
       loc = [] 
       string = title['title'].strip('"') 
       loc.append(string) 
       scrap.append(loc) 

      except TypeError: 
       pass 

    return scrap 



filename = 'localities.csv' 

scrap = scrapSite() 

def saveFile(scrap, filename): 

    with open(filename, 'wb') as csvfile: 

      writer = csv.writer(csvfile, delimiter=',',) 

      writer.writerow(['Name']) 
      for loc in scrap: 
       writer.writerow(loc) 


if __name__ == '__main__': 
    saveFile(scrap, filename) 
+4

嘗試'作家= csv.writer(csvfile,分隔符。 =',',csv.QUOTE_MINIMAL) ' –

回答

0

要發出的報價,只有當絕對需要,創造了作家時添加csv.QUOTE_MINIMALcsv.QUOTE_NONE參數:

writer = csv.writer(csvfile, delimiter=',',csv.QUOTE_MINIMAL) 

有作家細微的差別,但基本使用它們是相同的:

csv.QUOTE_MINIMAL指示編寫器對象僅引用那些包含特殊字符的字段,例如分隔符,引號或linetermina中的任何字符TOR。

csv.QUOTE_NONE:指示編寫器對象永遠不會引用字段。當輸出數據中出現當前分隔符時,它前面是當前的escapechar字符。如果沒有設置escapechar,那麼如果遇到任何需要轉義的字符,作者將引發錯誤。

即使csv.QUOTE_NONE問題時引用數據必須被引用(例如:在數據報價,這將使該CSV不可讀如果沒有逃過