将列表项与上一项连接

2024-10-02 02:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

如果项目不是以数字开头,我想将一个项目与前一个项目连接起来

例如:

l = ["1. first paragraph", "2. second paragraph", "end of second paragraph", "3. third paragraph"]

result = []
curr_str = ""
for item in l:
    curr_str += item
    if not item[0].isdigit():
        result.append(curr_str)
        curr_str = ""

我想要什么

result = ["1. first paragraph", "2. second paragraphend of second paragraph", "3. third paragraph"]

我所拥有的

result=["1. first paragraph2. second paragraphend of second paragraph"]

Tags: of项目infor数字resultitemend
3条回答

一种方法可能是将列表作为单个字符串连接在一起,然后用空格分割,后跟数字段落标题:

import re

l = ["1. first paragraph", "2. second paragraph", "end of second paragraph", "3. third paragraph"]
inp = ' '.join(l)
paragraphs = re.split(r'\s+(?=\d+\.)', inp)
print(paragraphs)

这张照片是:

['1. first paragraph',
 '2. second paragraph end of second paragraph',
 '3. third paragraph']

您可以使用负索引来获取所需内容

l = ["1. first paragraph", "2. second paragraph", "end of second paragraph", "3. third paragraph"]
res = []
for i in l:
    if i[0].isdigit():
        res.append(i)
    else:
        res[-1] = res[-1] + i
print(res)

输出

['1. first paragraph', '2. second paragraphend of second paragraph', '3. third paragraph']

注:

如果您的第一个元素不是以数字开头,则此操作将不起作用

如果列表为空或第一个字符是数字,则需要更改if条件,如if not res or i[0].isdigit():

在将当前项连接到curr_str之前,需要检查当前项是否以数字开头

在循环结束时,您需要检查curr_str是否包含任何内容,以便可以将最后的项附加到列表中

l = ["1. first paragraph", "2. second paragraph", "end of second paragraph", "3. third paragraph"]

result = []
curr_str = ""
for item in l:
    if item[0].isdigit():
        if curr_str:
            result.append(curr_str)
            curr_str = ""
    curr_str += item
if curr_str:
    result.append(curr_str)

print(result)

相关问题 更多 >

    热门问题