我正在处理一个文本文件,其列由制表符分隔。我想获取第一列的所有唯一值。
文本输入例如:
"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))
