Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对文本文件中的列值进行分层分组_Python_Grouping - Fatal编程技术网

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']}