Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从文件/列表中隔离参数_Python_File_List - Fatal编程技术网

Python 从文件/列表中隔离参数

Python 从文件/列表中隔离参数,python,file,list,Python,File,List,我正在尝试编写一个函数,它打开一个包含姓名、城市和数字列表的文件,并按城市对数字进行平均 到目前为止,我有一些类似于: numbers = 0 count = 0 n = 0 while n < len(file): for item in file: if item.split(' ')[-2] == city: count += 1 numbers += float(item.split(' ')[-1])

我正在尝试编写一个函数,它打开一个包含姓名、城市和数字列表的文件,并按城市对数字进行平均

到目前为止,我有一些类似于:

numbers = 0
count = 0
n = 0
while n < len(file):
    for item in file:
        if item.split(' ')[-2] == city:
            count += 1
            numbers += float(item.split(' ')[-1])
            n += 1
        else:
            n += 1
    return numbers / count
在每行上。

首先是项。拆分(“”)产生如下结果:

['foo', '', '', '', '', 'spam', '', 'foo', '', '666'] 
如果一行中有多个空格。使用
item.split()

其次,文件对象有迭代接口,所以可以在 文件行的方式如下:

for line in open('city.dat'):
    data = line.split()
    if data[-2] == 'CITYNAME':
       count += 1
       numbers += float(data[-1])
第三,确保文件中存在“CITYNAME”

为了防止不必要的文件读取和拆分,最好将准备好的数据存储在内存中:

data = map(lambda x: x.split(), open('city.dat'))
并在需要时对其进行过滤:

filtered_cities = filter(lambda x: x[-2] == 'CITYNAME', data)

虽然代码中的循环是不必要的,但也请发布您正在循环的文件的示例。
filtered_cities = filter(lambda x: x[-2] == 'CITYNAME', data)