错误:' list'对象没有属性' split'当我尝试从csv文件

时间:2016-12-13 06:40:05

标签: python python-2.7 csv

我是python的新手,所以请在开始过于批评之前考虑到这一点。

我有一个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相乘。如果之后是'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)',这会将单词转换为数字。如果它没有给出输出只是跳到下一个单词。

2 个答案:

答案 0 :(得分:0)

csv.reader构建生成器yiending列表,而不是字符串。换句话说,价值已被分割。

答案 1 :(得分:-1)

CSV模块中的阅读器返回二维类似列表。实际上,它返回一个生成器,在引用时它就像一个二维列表。列表的每个条目中有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,第一个示例将行拆分为列。