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)
这会奏效的。我真的无法对你的解决方案发表评论,因为我不理解它背后的思想过程,于是重新开始。如果您有任何问题,请随时提问