Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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_String_File_List - Fatal编程技术网

在python中从文件创建列表

在python中从文件创建列表,python,string,file,list,Python,String,File,List,我有一个.txt文件,如下所示: John 26 Mary 48 Nick 34 我想导入它们并将它们放在列表中,这样我就可以找到特定的元素。例如,age[1]的值为48,name[1]的值为Mary等 我试过了 import sys,random f = open('example.txt', 'r') for line in f: tokens=line.split() a=tokens[0] print a[1] 但是打印a[1]的结果是

我有一个.txt文件,如下所示:

John 26
Mary 48
Nick 34
我想导入它们并将它们放在列表中,这样我就可以找到特定的元素。例如,age[1]的值为48,name[1]的值为Mary等

我试过了

import sys,random
f = open('example.txt', 'r')
for line in f:
        tokens=line.split()
        a=tokens[0]
        print a[1]

但是打印a[1]的结果是每个字符串的第二个字母。

您需要的是
令牌[1]
,而不是
a[1]

这是
a
的值,它是
标记的第一个元素

Nick
但是
代币的第二个要素是年龄:

"34"
正如@user提到的,您可能希望它是整数,而不是字符串。您可以将其转换为整数:

a = int(tokens[1])
@第四,他们提出了一个很好的解决方案。我想我会建议把它存到字典里:

with open('example.txt') as f:
    ages = {}
    for line in f:
        d = line.split()
        ages[d[0]] = int(d[1])
下面是年龄

{'John':26, 'Mary':48, 'Nick':34} 
要检索约翰的年龄,请执行以下操作:

print(ages['John'])

希望这有帮助

您需要的不是
a[1]
,而是
令牌[1]

这是
a
的值,它是
标记的第一个元素

Nick
但是
代币的第二个要素是年龄:

"34"
正如@user提到的,您可能希望它是整数,而不是字符串。您可以将其转换为整数:

a = int(tokens[1])
@第四,他们提出了一个很好的解决方案。我想我会建议把它存到字典里:

with open('example.txt') as f:
    ages = {}
    for line in f:
        d = line.split()
        ages[d[0]] = int(d[1])
下面是年龄

{'John':26, 'Mary':48, 'Nick':34} 
要检索约翰的年龄,请执行以下操作:

print(ages['John'])
希望这有帮助

  • 读取文件时,请始终将
    一起使用,这样您就不必担心关闭文件
  • 然后,您可以读取行并拆分它们,最后像这样解压它们

    with open('Input.txt', 'r') as inFile:
        names, ages = zip(*(line.rstrip().split() for line in inFile))
        print names, ages
    
    names[0], ages[0]
    
    输出

    ('John', 'Mary', 'Nick') ('26', '48', '34')
    
  • 您可以像这样访问个人姓名和年龄

    with open('Input.txt', 'r') as inFile:
        names, ages = zip(*(line.rstrip().split() for line in inFile))
        print names, ages
    
    names[0], ages[0]
    
  • 读取文件时,请始终将
    一起使用,这样您就不必担心关闭文件
  • 然后,您可以读取行并拆分它们,最后像这样解压它们

    with open('Input.txt', 'r') as inFile:
        names, ages = zip(*(line.rstrip().split() for line in inFile))
        print names, ages
    
    names[0], ages[0]
    
    输出

    ('John', 'Mary', 'Nick') ('26', '48', '34')
    
  • 您可以像这样访问个人姓名和年龄

    with open('Input.txt', 'r') as inFile:
        names, ages = zip(*(line.rstrip().split() for line in inFile))
        print names, ages
    
    names[0], ages[0]
    

  • 我们不妨在处理下一个bug时抢占它:
    tokens[1]
    是一个字符串,因此除非先将其转换为
    int
    ,否则尝试对其进行数学运算将无法正常工作。我们还不知道OP会尝试对年龄字段进行数学运算。:-)是,但标记[1]打印整个列。如何选择特定值34?tokens[1][2]返回第三个字符…@qwrrty:也许他会在name字段上计算基数为36的数字?:)@Galil:
    tokens[1]
    不是整列,而是当前行的年龄。大概你看到整个专栏的原因是你只是想打印所有的名字和年龄,而不是把它们存储在任何一个
    age
    name
    列表中。要做到这一点,只需
    age.append(a)
    而不是
    print(a)
    。(或者按四步走的方式来做。)我们不妨在处理下一个bug时抢占它:
    tokens[1]
    是一个字符串,因此,除非先将其转换为
    int
    ,否则尝试对其进行数学运算将无法正常工作。我们还不知道OP会尝试对年龄字段进行数学运算。:-)是,但标记[1]打印整个列。如何选择特定值34?tokens[1][2]返回第三个字符…@qwrrty:也许他会在name字段上计算基数为36的数字?:)@Galil:
    tokens[1]
    不是整列,而是当前行的年龄。大概你看到整个专栏的原因是你只是想打印所有的名字和年龄,而不是把它们存储在任何一个
    age
    name
    列表中。要做到这一点,只需
    age.append(a)
    而不是
    print(a)
    。(或者按照你的方式做)使用genexpr比使用listcomp更好。毫无理由地建立一个额外的列表是没有意义的。但除此之外,我写的是完全相同的东西(我对genexpr与
    map
    的选择犹豫不决,而你在这方面击败了我)。使用genexpr比使用listcomp更好。毫无理由地建立一个额外的列表是没有意义的。但除此之外,我写的是完全相同的东西(我对genexpr与
    map
    的选择犹豫不决,而你在这方面击败了我)。