将文本文件中的列值放入 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]))
我有一个这样的文本文件:
一个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]))