python 如何循环列表并打印每一项但每行包含前一项

wecizke3  于 2023-02-18  发布在  Python
关注(0)|答案(3)|浏览(239)

我现在就有这段代码,但问题是它会遍历整个列表,并作为一个列表打印。
这是我正在阅读的数据。
[('Bob', '1\n2\n3'), ('Joe', '4\n5\n6')]

formatted_conversations = []
for conv in conversations:
    speaker, message = conv
    if len(formatted_conversations) == 0 or formatted_conversations[-1].split(" : ")[0] != speaker:
        formatted_conversations.append(speaker + " : " + message)
    else:
        formatted_conversations[-1] += "\n" + message
conversations=[]
for c in formatted_conversations:
    conversations.append(c.split(" : "))

现在它会自动将Bob 1,2,3打印为一个。
但我需要这样打印

Bob: 1
Bob: 1
2
Bob: 1
2
3
Joe:4
Joe:4
5
Joe: 4
5
6

因此,本质上它打印为3 vs 1,并且每次都添加以前的列表,并且当它看到带有以下字符的新用户时切换:

pxyaymoc

pxyaymoc1#

要包括旧的,请追加最后一行

formatted_conversations.append(formatted_conversations[-1])

新代码:

formatted_conversations = []
for conv in conversations:
    speaker, message = conv
    if len(formatted_conversations) == 0 or formatted_conversations[-1].split(" : ")[0] != speaker:
        formatted_conversations.append(speaker + " : " + message)
    else:
        formatted_conversations.append(formatted_conversations[-1])
        formatted_conversations[-1] += "\n" + message
conversations=[]
for c in formatted_conversations:
    c = c.split(" : ")
    print(c[0] , ":" , c[1])
    conversations.append(c[0] + ":" + c[1])

输出:

Bob : 1
Bob : 1
2
Bob : 1
2
3
Joe : 4
Joe : 4
5
Joe : 4
5
6
db2dz4w8

db2dz4w82#

将消息连接到字符串之后,将formatted_conversations[-1]追加到结果列表,这样您就可以获得所有增量会话。

conversations = [('Bob', '1\n2\n3'), ('Joe', '4\n5\n6')] 
formatted_conversations = []
for speaker, messages in conversations:
    output = speaker + ': ' + messages[0]
    formatted_conversations.append(output)
    for message in messages.split('\n')[1:]:
        output += '\n' + message
        formatted_conversations.append(output)

print(*formatted_conversations, sep="\n")

输出为:

Bob : 1
Bob : 1
2
Bob : 1
2
3
Joe : 4
Joe : 4
5
Joe : 4
5
6
vsdwdz23

vsdwdz233#

我不知道你的数据格式,我会这样做:

data = [('Bob', '1\n2\n3'), ('Joe', '1\n2\n3')]

def print_repeated(prefix, data):
    data = data.split("\n")
    last_print = f"{prefix}: {data[0]}"
    print(last_print)
    for item in data[1:]:
        last_print += "\n" + str(item)
        print(last_print)

print_repeated(data[0][0], data[0][1])

for name, values in data:
    print_repeated(name, values)

这将输出:

Bob: 1
Bob: 1
2
Bob: 1
2
3
Joe: 4
Joe: 4
5
Joe: 4
5
6

相关问题