2016-12-13 27 views
0

我是python的新手,所以請在開始過於嚴格之前考慮這一點。錯誤:當我嘗試從csv文件拆分一行時,'list'對象沒有屬性'split'

我有類似條目的CSV文件: -

for 30 days 
for thirty working days 
for 20 weeks 
for 2 months 

我想用一個空格每一行拆分爲分隔符: -

(for) (30) (days) 
(for) (thirty) (working) (days) 

現在我想通過每個單詞word2number所以我的'thirty'將被給予'30'

現在的第一行作爲'30'已經是一個數字我想乘以1作爲我t說幾天。如果之後是'n weeks''n*7'。多年來一直爲'*30''*365'多年。

乘法的結果應在該行的相應單元格中輸出。

現在我的代碼是

import csv 
from word2number import w2n 

with open("test_term.csv", "rb") as file1: 
     reader = csv.reader(file1) 
     extractedlist = list(reader) 
     #print extracted 
def split_line(text): 

    # split the text 
    words = text.split('') 

    # for each word in the line: 
    for word in words: 

     # print the word 
     print(word) 

for extracted in extractedlist: 
    worn = split_line(extracted) 

即時得到錯誤'AttributeError: 'list' object has no attribute 'split''

我需要將拆分的單詞傳遞給'w2n.word_to_num(word)',這會將單詞轉換爲數字。如果它沒有給出輸出就跳到下一個單詞。

回答

-1

CSV模塊中的閱讀器返回2維列表。實際上,它返回一個生成器,它在引用時的行爲類似於二維列表。列表中每個條目中有n個列的數量。你需要爲你的閱讀器添加一個for循環。所以,當你去分割線和打印它通過每一行列做一個循環。這是代碼的樣子。

for extrRow in extractedList: 
    for extrColumn in extrRow: # for each entry in the row 
    worn = split_lines(extrColumn) 

即使您的文件沒有逗號,CSV仍會嘗試用逗號分隔該行。 Python會將它作爲列表返回,因此每行只有一個條目。如果您想了解更多信息,請查看Python's CSV module,第一個示例將行拆分爲多列。

+0

謝謝,你能告訴我如何檢查拆分的單詞是「天還是月還是年」? – safwan

+0

你是什麼意思檢查分詞?你總是可以在str:doSomething()中使用if語句,如果「month」。 –

+0

csv.reader不會返回二維列表,因爲它會消耗太多讀取大型CSV文件的RAM。它返回一個生成器:https://docs.python.org/2/library/csv.html – Fomalhaut

0

csv.reader構建生成器yiending列表,而不是字符串。換句話說,價值已經被分割。

相關問題