如何使用CSV将文本文件放入数组,然后在该数组中搜索特定值

时间:2017-09-30 16:08:41

标签: python csv

我正在尝试使用CSV模块从文本文档中提取十进制值,但我发现它很难。这是我正在使用的文本文件:

Lipids,1.2
Triglycerides,1.7
Fats,6.6
Sugar,7.1

这是我制作的代码,但我仍然试图让它工作,我发现很难搜索特定的值。我不认为我对分割数组的想法有效:

searcher=Fats
with open('Truffles.txt','rU') as f:
    reader= csv.reader(f)
    #(reader) should look like this [Lipids,1.12],[Triglycerides,1.7]
    rows(1-4)=reader/4
    #So now row1=[Lipids,1.12] as reader as been divided into four parts
    if searcher in row1:
    num=row1/2 #The second part of row1
    else 
    #Move to row2 and continue search
    print (num)
    #Eventually num will be found.In this case 6.6 should be printed.

基本上我要做的是创建一个包含文本文件中所有数据的长数组(返回)。然后长阵列应该分解成几乎小的数组(行)。然后程序应该打印与要求搜索的字符串相关的浮点值(搜索者)。

1 个答案:

答案 0 :(得分:0)

该代码中存在多个语法错误。您不能通过发明自己的语法来编写代码,例如rows(1-4)=reader/4。您需要使用该语言提供的功能。但无论如何......

csv模块旨在让您逐行循环遍历CSV文件,并且对于您的数据文件,每个行列表将包含两个项目:复合名称和关联的浮点值。这是一个简单的演示,可以执行您想要的搜索。当它找到该项目时,它会打印它并突破循环。如果它没有找到它告诉你它无法找到的项目。

import csv

searcher = 'Fats'
with open('Truffles.txt','rU') as f:
    reader = csv.reader(f)
    for row in reader:
        if row[0] == searcher:
            print('{}: {}'.format(*row))
            break
    else:
        print(searcher, 'not found')

<强>输出

Fats: 6.6