Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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_Unix_Output - Fatal编程技术网

Python 如何根据元素的组将元素拆分为不同的行?

Python 如何根据元素的组将元素拆分为不同的行?,python,unix,output,Python,Unix,Output,如何使用Unix命令或Python/perl将所有元素按组拆分为不同的行 输入文件: 输出: 您可以拆分字符串,然后使用字典存储它们: # go through each line in the file, and split into a dict members = {} for group, member_string in (x.split('\t', 1) for x in groups_file): members.update({member: group for memb

如何使用Unix命令或Python/perl将所有元素按组拆分为不同的行

输入文件: 输出:
您可以拆分字符串,然后使用字典存储它们:

# go through each line in the file, and split into a dict
members = {}
for group, member_string in (x.split('\t', 1) for x in groups_file):
    members.update({member: group for member in member_string.split()})

# print the resulting elements from the dict
for member in sorted(members):
    print(member, members[member])
使用这些数据:

groups_file = [x.strip() for x in """
    Group1\tm1 m2 m3
    Group2\tm4
    Group3\tm5 m6
""".split('\n')[1:-1]]
m1 Group1
m2 Group1
m3 Group1
m4 Group2
m5 Group3
m6 Group3
打印此数据:

groups_file = [x.strip() for x in """
    Group1\tm1 m2 m3
    Group2\tm4
    Group3\tm5 m6
""".split('\n')[1:-1]]
m1 Group1
m2 Group1
m3 Group1
m4 Group2
m5 Group3
m6 Group3

您可以读取文件并按如下方式输出:

with open("read.txt", "r") as infile:
    groups = {}
    for i in infile:
        groups[i.split("        ")[0].split("Group")[1]] = i.strip("\n").split("        ")[1].split(" ")

with open("output.txt", "w") as outfile:
    for i in range(len(groups)):
        for j in groups[str(i+1)]:
            if j != "":
                outfile.write("Group"+str(i+1)+" "+j+"\n")

字典组包含组的所有m*元素。写入输出文件时,我们可以迭代这些组中的组和m*,并将它们逐行写入输出文件。

假设您的输入文件名为input.txt

all_members = dict()
with open('input.txt', 'r') as f:
    for line in f:
        line_tokens = line.split()
        group_members = line_tokens[1:]
        for member in group_members:
            all_members[member] = line_tokens[0]

for member in sorted(all_members.keys()):
    print '{} {}'.format(member, all_members[member])
这将打印出:

m1 Group1
m2 Group1
m3 Group1
m4 Group2
m5 Group3
m6 Group3
保持简单:

awk '{for(i=2;i<=NF;++i)print $i, $1}' input_file 

因此,这不是一个代码编写服务。你试过什么?请张贴您的密码。什么有效还是无效?我当然试过了。我发帖是因为我不知道该做什么,我想学习。我有一个可以工作的perl脚本,但我需要将每一行放在一个单独的文件中,并为每个文件运行。但是我的文件有800行,所以这当然不是一个好主意,也不是一个好代码。我需要一些不同的东西,但我不知道如何用一种简单的方式来做。对不起,如果我不是一名高级程序员,我想这个小组也要学习。这些标签是在组和值之间,即在组1和m1之间吗?是的,所有元素之间都有标签。非常简单有效。谢谢