Skip to main content
 首页 » 编程设计

python之如何获取文本文件第一列的唯一元素

2025年05月04日13lovecherry

我正在处理一个文本文件,其列由制表符分隔。我想获取第一列的所有唯一值。

文本输入例如:

"a\t\xxx\t..\zzz\n 
 a\t\xxx\t....\n 
 b\t\xxx\t.....\n 
 b\t\xxx\t.....\n 
 c\t\xxx\t.....\n" 

所以在这种情况下,我想得到一个数组:uniques=["a","b","c"]

代码:

def getData(fin): 
    input = open(fin, 'r',encoding='utf-16') 
    headers=input.readline().split() 
    lines=input.readlines()[1:] 
    uniques=[(lambda line: itertools.takewhile(lambda char: char!='\t',line))for line in lines] 

我得到的不是所需的值,而是一个列表:

<function getData.<locals>.<listcomp>.<lambda> at 0x000000000C46DB70> 

我已经读过这篇文章Python: Lambda function in List Comprehensions我不明白你必须使用括号来确保正确的执行顺序。我仍然得到相同的结果。

请您参考如下方法:

你可以只使用split():

def getData(fin): 
    input = open(fin, 'r',encoding='utf-16') 
    headers=input.readline().split() 
    lines=input.readlines()[1:] 
    uniques=[line.split('\t')[0] for line in lines] 

请注意,这不会产生唯一值,它会产生每一行的值。要使其独一无二,请执行以下操作:

uniques = list(set(uniques))