2016-04-22 112 views
0

我讀的狀態列表從文件到列表[]:Python 3.5,如何在打印或向函數發送值時從元素中刪除括號和引號?

mystk = [] 
with open('state_list.txt') as csvfile: 
    readCSV = csv.reader(csvfile,delimiter=',') 

for row in readCSV: 
    mystk.append(row) 

我到一個列表中添加值讀取後。

print(str(mystk[0]).strip())  

i=0 
while i < 10: 
    strList = mystk[i] 
    print('Print:',strList) 
    i = i +1 

的上述的輸出是:

Print: ['AL'] 
Print: ['AK'] 
Print: ['AZ'] 
Print: ['AR'] 
Print: ['CA'] 
Print: ['CO'] 
Print: ['CT'] 
Print: ['DE'] 
Print: ['FL'] 
Print: ['GA'] 

我試圖實現如下:

Print: AL 
Print: AK 
Print: AZ 
Print: AR 
Print: CA 
Print: CO 
Print: CT 
Print: DE 
Print: FL 
Print: GA 

我想我可以寫一個函數或循環到剝離出[ '?']使用正則表達式或代碼這樣的:

i=0 
while i < 10: 
    strList = mystk[i] 
    strList = str(strList).replace("['", "") 
    strList = strList.replace("']", "") 
    print(' ','Print:',strList) 
    i = i +1 

但是我希望有一個更簡單的方法,然後上面的代碼,但我是新的python,如果這是唯一的方式,那麼它適用於我。

+1

你爲什麼在用字符串來填滿?將它用作列表並訪問第一個元素。 – jonrsharpe

+0

如果每行只有一個值,那麼爲什麼要使用'csv'?爲什麼不只是'mystk = csvfile.readlines()'?或者更好的辦法是:'在csvfile中輸入:print(...,line)'如果你只想把每一行都打印到屏幕上? –

+0

問題我有列表是因爲某些原因,我得到['名稱']通過/打印,而不是名稱的函數調用。 –

回答

0

這是我在我的評論提建議加上其他一些

import csv 

def getTID(file='TID.csv', delim='\n'): 
    result = [] 
    with open(file) as csvTID: 
     readCSV = csv.reader(csvTID, delimiter=delim) 
     for row in readCSV: 
      result.append(row[0]) 
    return result 

stockList = getTID() 
for x in stockList: 
    print(x) 

這裏使用的論點,功能更多的靈活性和使用默認值我保留了原有的行爲,這樣你就不需要修改代碼(或如果你想的話,文件的名稱)例如在'TID_2.cvs'等其他文件中使用你的函數,在這種情況下,只需調用getTID('TID_2.cvs'),由於該函數對某個全局變量不做任何處理,所以如果需要它,你可以將來自2個或更多不同變量的不同文件的數據,例如

stockList1 = getTID('TID_1.cvs') 
stockList2 = getTID('TID_2.cvs') 
0

CSV文件的每一行由逗號分開,重新獲得由逗號字符串join版,使用str.join

sep = ", " 
for row in mystk: 
    print(' ', 'Print:', sep.join(row)) 
0

傢伙謝謝大家非常多,學習這東西是真棒。很多方式去做東西。閱讀您的意見和理解的概念後,我寫了下面的函數來獲取股票列表我需要:

import csv 

stockList = [] 

def getTID(): 

    with open('TID.csv') as csvTID: 
     readCSV = csv.reader(csvTID,delimiter='\n') 
     for row in readCSV: 
      stockList.append((row[0])) 


getTID() 

for x in stockList[:]: print(x) 

這將返回預期列表:VOD.L,APPL等

+0

你不需要'stockList [:]'中的'[:]'能夠遍歷該列表,另外在一般的全局變量中應該使用一個常量,並且修改一個函數外的對象通常是一個糟糕的以後會咬你的練習。你的函數'getTID'應該在它內部建立一個返回它的列表,不要修改全局列表 – Copperfield

+0

非常感謝大家。 –

相關問題