如何在Python中使用索引[0]打印具有相同编号的项目

时间:2014-04-03 20:21:14

标签: python indexing

对于一个程序,我有一个包含大量不同数字的文件。我需要创建一个程序,只打印以1开头的数字。到目前为止,我有这个:

f=open('filename.txt').readlines()
    for line in f:
        numbers=line[0]
        print(numbers)

当然,它会不断地打印每行的第一个数字,直到它完成整个文档。我试过了

numbers=line[0]
if numbers==1
    print(number)

但这并没有让我任何地方。谁能帮我这个?感谢。

3 个答案:

答案 0 :(得分:0)

当您读取文件时,内容将是一个字符串或一串字符串。您可以使用字符串方法,例如str.startswith

f=open('filename.txt').readlines()
    for line in f:
        numbers = [x for x in line if x.startswith("1")]
        print numbers

上面的代码挑选出以"1"开头的字符串中的所有项目。但是有一个问题,因为我们不知道你的数据是什么样的(例如分隔符是什么),它只会返回一堆数据。那是因为它通过每个字节的行字节并且因为它们是字符串,所以不可能知道1后跟0是10还是1和0。

这是一个假定您的数据由,分隔的版本,我确定您将弄清楚如何根据您的需要对其进行修改。

with open('filename.txt') as f:
    numbers = []
    for line in f:
        numbers.extend(x for x in line.split(",") if x.startswith("1"))
    print ", ".join(numbers)

上面的代码使用了with - 在处理文件时应该使用的语句,因为它处理文件描述符的打开和关闭,所以你不必这么做。然后,它会遍历文件的行,并将每个数字添加到数字列表中(如果它们以1开头。最后,它将数字打印为长字符串,由,分隔。

演示数据:

['3786, 9481, 314, 5951, 2676, 2938, 7725, 8849, 1609, 3451',
 '9036, 4079, 4718, 2180, 6609, 8864, 5391, 9663, 9431, 665',
 '6873, 2564, 559, 154, 573, 9232, 3094, 6530, 7594, 8347',
 '7150, 7889, 2108, 4278, 4362, 7282, 3784, 1943, 3655, 4335',
 '7196, 3537, 691, 5544, 70, 7171, 7375, 2911, 4992, 6834',
 '8298, 4905, 2366, 3368, 4474, 5900, 5506, 250, 1854, 4595',
 '4302, 3781, 984, 1176, 9183, 152, 9976, 2088, 9391, 8562',
 ......
 ]

示例输出:

'1609, 154, 1943, 1854, 1176, 152, 1884, 1091, 1507, 1550, 1565, 1938, 1341, 1829, 1050, 1796, 1931, 1116......'

答案 1 :(得分:0)

f=open('filename.txt').readlines()
    for line in f:
        if line[0] == '1':
            print(line)

答案 2 :(得分:0)

试试这个:

numbers = line[0]
if type(numbers) == int and numbers[0] == 1:
    print(numbers)

希望这有帮助!