Python 如何仅在csv文件的排序列表中显示int

Python 如何仅在csv文件的排序列表中显示int,python,csv,sorted,Python,Csv,Sorted,我有一个巨大的CSV文件,我只想显示列“名称”和“运行时” 我的问题是,我必须对文件进行排序,并从 行并打印它们 但行“runtime”包含如下文本: ['http://dbpedia.org/ontology/runtime', 'XMLSchema#double', 'http://www.w3.org/2001/XMLSchema#double', '4140.0', '5040.0', '5700.0', '{5940.0|6600.0}', 'NULL', '6480.0

我有一个巨大的CSV文件,我只想显示列“名称”和“运行时” 我的问题是,我必须对文件进行排序,并从 行并打印它们 但行“runtime”包含如下文本:

['http://dbpedia.org/ontology/runtime',
 'XMLSchema#double',
 'http://www.w3.org/2001/XMLSchema#double',
'4140.0',
 '5040.0',
 '5700.0',
 '{5940.0|6600.0}',
 'NULL',
 '6480.0',....n]
如何对仅显示数字的列表进行排序

到目前为止,我的代码是:

import csv

run = []

fp = urllib.urlopen('Film.csv')

reader = csv.DictReader(fp,delimiter=',')

for line in reader:

    if line:
            run.append(line)

name = []

for row in run:

    name.append(row['name'])

    runtime = []

for row in run:

    runtime.append(row['runtime'])

runtime
预期产出:

csv文件包含空值和如下所示的值{5940.0 | 6600.0}

预期产量

 '4140.0',
 '5040.0',
 '5700.0',
 '6600.0',
 '6800.0',....n]
不包含空值,并且仅包含查找的值中最高的值 这样地
{5940.0 | 6600.0}

您可以这样过滤它,但您可能应该等待更好的答案

>>>l=[1,1.3,7,'text']
>>>[i for i in l if type(i) in (type(1),type(1.0))] #only ints and floats allowed
[1,1.3,7]

这应该可以做到。

我的工作流程可能是:使用
str.isdigit()
作为过滤器,用BIF
int()
float()
转换成一个数字,然后使用
sort()
sorted()
,而您可以使用此处显示的众多答案之一,我个人会利用您的csv文件的一些领域知识:

runtime = runtime[3:]
根据
运行时
行的示例值,前三列包含元数据。因此,您对输入文件的结构了解得更多,而不仅仅是“它是一个csv文件”

然后,您需要做的就是排序:

runtime = sorted(runtime)
max_10 = runtime[-10:]
min_10 = runtime[:10]

我在这里使用的语法称为“slice”,它允许您通过在用冒号分隔的方括号中指定开始索引和“最多但不包括”索引来访问序列的一个范围。巧妙的技巧:负索引换行被视为从序列的末尾开始。

请识别代码。换句话说,您希望过滤数据以仅包含数字?请编辑您的程序的预期输出。我是新来的,对代码很抱歉!但我想过滤它,使它只包含数字。@msvalkon我想概括地说,是的。[i for i in runtime如果(i)in(type(1),type(1.0))应该做什么?但这似乎有点不和谐。