Python 对文本文件中的列值进行分层分组
有没有办法按列对文本文件中的值进行分组? 我有一个文本文件,其值如下Python 对文本文件中的列值进行分层分组,python,grouping,Python,Grouping,有没有办法按列对文本文件中的值进行分组? 我有一个文本文件,其值如下 a,b,c a,x,y a,z,m b,x,y b,z,m a,b,c a,x,y a,z,m b,x,y b,z,m 并且需要在唯一的第一列上分组值,如下所示 a, b;x;z, c;y;m b, x;z, y;m 假设文本文件每行只有三列 s1,s2,s3=set(),set(),set() 打开('file.txt')作为txt\u文件: lines=txt_file.readlines() 对于行中的行: l
a,b,c
a,x,y
a,z,m
b,x,y
b,z,m
a,b,c
a,x,y
a,z,m
b,x,y
b,z,m
并且需要在唯一的第一列上分组值,如下所示
a, b;x;z, c;y;m
b, x;z, y;m
假设文本文件每行只有三列
s1,s2,s3=set(),set(),set()
打开('file.txt')作为txt\u文件:
lines=txt_file.readlines()
对于行中的行:
line=line.strip()
c1,c2,c3=直线分割(',')
s1.加入(c1)
s2.加入(c2)
s3.加入(c3)
col1=';'。加入(s1)
col2=';'。加入(s2)
col3=';'。加入(s3)
打印(“{},{},{}”。格式(col1,col2,col3))
因此,如果文件file.txt
的内容是:
a,b,c
a,x,y
a,z,m
输出:
a, b;z;x, y;m;c
你可以试着用熊猫 myFile.txt 输出:
Input data
a,b,c
a,x,y
a,z,m
b,x,y
b,z,m
Solution
B C
A
a b;x;z c;y;m
b x;z y;m
如果您不关心使用分号和逗号进行格式设置,一种简单的方法是在字典中对它们进行分组:
with open('sample.txt') as f:
lines = f.readlines()
dic = {}
for line in lines:
lst = line.strip().split(',')
dic[lst[0]] = dic.get(lst[0], []) + lst[1:]
print(dic)
# {'a': ['b', 'c', 'x', 'y', 'z', 'm'], 'b': ['x', 'y', 'z', 'm']}
每一行都有3列吗?它是一个“文本文件”,这样你就可以打印你想要的,所以“是的,你可以打印任何你想要的。”但是,如果你想把结构放入到文本文件中,你可以稍后再拿回来,你可以考虑把文件改成JSON。您可以将记录存储在dict中,使用第一列作为键,并读取/写入该dict。同时查看文件中的内容结构,看起来他希望将数据存储为
csv
。在这种情况下,最好将第一列作为标题,描述每列包含的数据标签。@anil如果我的解决方案解决了您的问题,请将其标记为接受答案。感谢第一列也有不同的值,需要根据第一列中的值进行分组。a、 b,ca,x,ya,z,mb,x,yb,z,m
with open('sample.txt') as f:
lines = f.readlines()
dic = {}
for line in lines:
lst = line.strip().split(',')
dic[lst[0]] = dic.get(lst[0], []) + lst[1:]
print(dic)
# {'a': ['b', 'c', 'x', 'y', 'z', 'm'], 'b': ['x', 'y', 'z', 'm']}