python中的文本文件

时间:2019-02-18 18:01:17

标签: python jupyter-notebook

The screenshot of the text file I'm trying to read from

我在python jupyter笔记本中有一个文本文件。问题是“计数大于0.1的数字”。我不知道如何为此编写代码。文本文件具有名称和整数。我想我可以为此创建两个列表,但不确定如何获得大于1.的数字的输出。

这是我到目前为止编写的代码。

def ans9(file):
    infile = open(file)
    contents = infile.read().split()
    infile.close()

3 个答案:

答案 0 :(得分:1)

如果您只需要算一算,这样的方法就可以工作:

def ans9(file):
    with open(file, 'r') as infile:
        count = 0
        for line in infile:
            if float(line.split('\t')[1]) >  0.1:
                count += 1

    return count

如果要拆分表示数据:

def ans9(file):
    with open(file, 'r') as infile:
        items = []
        for line in infile:
            item = line.split('\t')
            if float(item[1]) >  0.1:
                items.append(item)

    return items

将返回一个类似于[["a", "0.22"], ["b", "0.11"]]的列表,您可以很容易地遍历它。

答案 1 :(得分:0)

with open('a.txt', 'r') as f:
    data = []
    for line in f:
        data.append(float(line.split()[1]))


print(len([i for i in data if i > 0.1]))
# prints 2 for the following data:
Smith 0.88
Johnson 0.68
Brown 0.04

答案 2 :(得分:0)

我不同意tgikal对列表列表的使用。在这种情况下,正确的数据结构可能是字典(是的缩进看起来很有趣,但符合PEP-8,如果忽略它们,它的读法类似于英语):

filename = 'people.txt'
with open(filename) as file:
    filtered_users = {user:score 
                      for user, score in (line.split() 
                                          for line in file
                                          if line)
                      if score > 0.1}

print(len(filtered_users))