Python 将列表项与上一项连接

Python 将列表项与上一项连接,python,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

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

例如:

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"]

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

重新导入
l=[“1.第一段”、“2.第二段”、“第二段末尾”、“3.第三段”]
inp=''.join(l)
段落=重新拆分(r'\s+(?=\d+\)',inp)
打印(段落)
这张照片是:

['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或i[0]。isdigit():

code

要连接列表中的所有元素,您需要使用
“”。连接(列表)
,但在您的情况下,它必须更具选择性,因此我们可以使用列表理解:

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

import re
result = [elem for elem in l if re.match('^\d.*$', elem)]
result = "\n".join(result)
print(result)
输出:

1. first paragraph
2. second paragraph
3. third paragraph
['1. first paragraph', '2. second paragraph', '3. third paragraph']
解释

第一步:

['1. first paragraph2. second paragraph3. third paragraph']
使用列表理解和正则表达式过滤输入列表中的值,得到一个只包含以数字开头的字符串的列表

输出:

1. first paragraph
2. second paragraph
3. third paragraph
['1. first paragraph', '2. second paragraph', '3. third paragraph']
第二步:

result = ["\n".join(result)]

使用
join
内置字符串方法连接列表项

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

在循环结束时,您需要检查
curr\u 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)
好了

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

result = []
curr_str = l[0]
for item in l[1:]:
    if item[0].isdigit():
        result.append(curr_str)
        curr_str = item
    else:
        curr_str+=item
result.append(curr_str)
这会奏效的。我真的无法对你的解决方案发表评论,因为我不理解它背后的思想过程,于是重新开始。如果您有任何问题,请随时提问