将文本文件中的列值放入 python 中的列表

Putting column values from text file into a list in python

我有一个这样的文本文件:

一个w
×
c,y
e,fz

而且我想将第一列的值放入一个列表中,不重复。现在我从第一列中获取值,我这样做是这样的:

f=open("file.txt","r")
lines=f.readlines()
firstCol=[]
for x in lines:
    firstCol.append(x.split('   ')[0])
f.close()

在下一步中,我想像以前一样用逗号分隔符分隔值,但随后我得到如下输出:

[['a'], ['b'], ['c', 'd'], ['e', 'f']]

我怎样才能将它转换成一维的东西以便之后能够删除重复项? 我是 python 的初学者。

您可以使用 itertools.chain 来展平您的列表列表,然后您可以使用内置的 class set 来删除重复项:

from itertools import chain

l = [['a'], ['b'], ['c', 'd'], ['e', 'f']]
set(chain.from_iterable(l))
# {'a', 'b', 'c', 'd', 'e', 'f'}

要展平您的列表,您还可以使用列表理解:

my_l = [e for i in l for e in i]
# ['a', 'b', 'c', 'd', 'e', 'f']

与 2 个简单的 for 循环相同:

my_l = []

for i in l:
    for e in i:
        my_l.append(e)

您可以在第一次拆分后立即拆分它,并且必须使用扩展而不是追加。

f=open("file.txt","r")
lines=f.readlines()
firstCol=[]
for x in lines:
    firstCol.extend(x.split(' ')[0].split(','))
f.close()

print(firstCol)

结果

['a', 'b', 'c', 'd', 'e', 'f']

或者如果您想保留第一个列

f=open("file.txt","r")
lines=f.readlines()
firstCol=[]
for x in lines:
    firstCol.append(x.split(' ')[0])
f.close()

one_dimension = []
for col in firstCol:
    one_dimension.extend(col.split(','))

print(firstCol)
print(one_dimension)

结果

['a', 'b', 'c,d', 'e,f']
['a', 'b', 'c', 'd', 'e', 'f']

可能的解决方案 1

如果您对自己的代码没问题,您可以保持这样并从执行以下操作的列表列表中删除重复项:

import itertools

firstCol.sort()
firstCol = list(x for x,_ in itertools.groupby(firstCol))

可能的解决方案 2

如果要将列表列表转换为一个项目列表:

firstCol = [x for y in firstCol for x in y]

如果您还想删除重复项:

firstCol = list(set([x for y in firstCol for x in y]))