我是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)'
,这会将单词转换为数字。如果它没有给出输出只是跳到下一个单词。
答案 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,第一个示例将行拆分为列。