UnixコマンドまたはPython/perlを使用して、グループごとにすべての要素を異なる行に分割する方法は?グループごとに要素を異なる行に分割する方法は?
入力ファイル:
Group1 m1 m2 m3
Group2 m4
Group3 m5 m6
出力:
m1 Group1
m2 Group1
m3 Group1
m4 Group2
m5 Group3
m6 Group3
UnixコマンドまたはPython/perlを使用して、グループごとにすべての要素を異なる行に分割する方法は?グループごとに要素を異なる行に分割する方法は?
Group1 m1 m2 m3
Group2 m4
Group3 m5 m6
m1 Group1
m2 Group1
m3 Group1
m4 Group2
m5 Group3
m6 Group3
あなたは文字列を分割し、それらを保存するために辞書を使用することができます。このデータを使用して
# 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
あなたは、このようなファイルや出力、それ読むことができる:
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
提案をありがとう、それは非常にうまくいった。 – Paul
は、SOコードの書き込みサービスではありません。何を試しましたか?あなたのコードを投稿してください。何が働いたの? – RobertB
もちろん私は何かを試しました。私は何をすべきかわからず、学びたいので投稿しました。私は動作するperlスクリプトを持っていますが、各行を別々のファイルに入れて各ファイルに対して実行する必要があります。しかし、私のファイルには800行しかないので、もちろん良い考えではありません。それは良いコードではありません。私は別のものが必要ですが、私は簡単な方法でそれをやる方法がわかりません。申し訳ありませんが、高度なプログラマーではない場合、私はこのグループも同様に学ぶことになりました。 – Paul
これらのタブはグループと値の間にありますか(Group1とm1 ...の間)ですか? –