用字符替换所有出现的数组相同键,跳过第一次替换

时间:2016-01-14 18:41:17

标签: python regex text

我尝试了很多方法来解决这个问题,但不能在几行代码中完成,因为我是Python的新手。我想知道是否有人对以下问题有一个优雅的解决方案。

我有这样的原始行:

A: D

A: E

A: C

G: H
F: I

F: J

B: A

B: K

B: L

D: M

D: N

D: O

E: P

E: Q

C: R

C: S

C: T

如何使用Python将它们变成这种形式?

A: D; E; C

G: H

F: I; J

B: A; G; L

D: M; N; O

E: P; Q

C: R; S; T

换句话说,在"之前组合具有相同字符的条目:"用"分隔每个元素; "

2 个答案:

答案 0 :(得分:1)

存储在字典中,然后打印:

lines = """foo: bar
foo: baz
a: b"""

result = {}
for line in lines.split("\n"):
    (word, sentence) = line.split(":",1)
    word = word.strip()
    if word not in result:
        result[word] = []
    result[word].append(sentence.strip())

for word in result.keys():
    print word + ": " + "; ".join(result[word])

答案 1 :(得分:0)

使用字典并在':'上分割每一行。

读取每一行,Key是前':'分割,值是帖子':'分割。为第一个值和附加值添加一些逻辑

my_dict = dict()

with open('file.txt') as f:
    for line in f:
        key,value = line.split(':')
        if my_dict[key] is None:
            my_dict[key] = value
        else:
            my_dict[key] += '; {0}'.format(value)