用python选择一行的第一个元素

时间:2018-05-24 09:52:09

标签: python list

我在使用python选择一行的第一个元素时遇到了一些问题。 我有一个txt文件,其中数据以这种方式组织:

AES

我想打印第一个成员与列表成员匹配的行:

0  3  546
1  2  435
2  4  900
22 3  384

我试图这样做:

myList = [1, 22]

但它回到我身边:

for i in externalFile: 
   if i[0] in myList:
       print (i)

因为我发现,我认为1 2 435 2 4 900 22 3 384 的“22”与外部文件的“2”之间存在匹配。有人知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

这应该有效。逐行读取文件,检查列表中的第一个单词是否打印。

lst = [1, 22] 
with open('file.txt') as f:
    for line in f:
        words = line.split()
        if int(words[0]) in lst:
            print(line)

# 1  2  435
# 22 3  384                                                 

答案 1 :(得分:0)

使用str.split按空格分割线条。然后比较

<强>实施例

myList = [1, 22]
with open(filename, "r") as infile:
    for line in infile:
        val = line.split()
        if int(val[0]) in myList:
            print(line.strip())

<强>输出:

1  2  435
22 3  384

答案 2 :(得分:0)

尝试下面的解决方案,我只是做了一个简单的列表理解,我将文件的每一行拆分为' '并获取它的第一个元素并检查它是否以{{1的任何元素开头如果是,请将其删除,以便myList不在字符串中

'\n'

输出:

myList = [1, 22]
with open('test.txt') as f:
    print([i.strip() for i in f.readlines() if int(i.split(' ')[0]) in myList])

如果您希望它像您想要的那样显示,请尝试下面的代码

['1  2  435', '22 3  384']

输出:

myList = [1, 22]
with open('test.txt') as f:
    lstcomp = [i.strip() for i in f.readlines() if int(i.split(' ')[0]) in myList]
    for i in lstcomp:print(i)