新手程序员:如何拆分领域字符串以生成对应序号列表?
解决方法
针对你给出的带编号的字符串,有两种简单的方式可以拆分并生成对应位置的列表:
方法一:字符串拆分法(格式固定时首选)
如果你的字符串格式始终是编号. 内容;编号. 内容这种固定模式,可以直接通过两次拆分实现:
# 初始字符串 original_str = "1. LS1_9 信号过程的分子机制;2. LS1_7 分子生物物理学、生物力学、生物能学" # 第一步:按中文分号拆分出每个编号项 split_parts = original_str.split(";") # 第二步:去掉每个项的编号前缀,提取内容 result_list = [item.split(". ", 1)[1] for item in split_parts if item.strip()] print(result_list) # 输出:['LS1_9 信号过程的分子机制', 'LS1_7 分子生物物理学、生物力学、生物能学']
解释:
split(";")把整个字符串按中文分号拆分成两个子串,分别对应两个编号项split(". ", 1)把每个子串按". "拆分成两部分,取第二部分就是纯内容;1表示只拆分一次,避免内容里有"."时出错if item.strip()用来过滤拆分后可能出现的空字符串
方法二:正则表达式法(格式灵活时首选)
如果字符串里的分隔符可能混用中英文分号,或者编号格式有变化(比如多位数编号),用正则表达式可以更灵活地提取内容:
import re original_str = "1. LS1_9 信号过程的分子机制;2. LS1_7 分子生物物理学、生物力学、生物能学" # 匹配"数字. 内容"的模式,直到遇到分号或字符串结尾 result_list = re.findall(r"\d+\. (.*?)(?=[;;]|$)", original_str) print(result_list) # 输出:['LS1_9 信号过程的分子机制', 'LS1_7 分子生物物理学、生物力学、生物能学']
解释:
\d+匹配1个或多个数字(支持多位数编号,比如10. xxx)\.匹配点号(点号是正则特殊字符,需要转义)(.*?)非贪婪匹配任意字符,直到遇到后面的终止符(?=[;;]|$)正向预查,匹配到中文分号、英文分号或字符串结尾就停止
两种方法最终都能得到你需要的列表,列表第1位对应原字符串的1号内容,第2位对应2号内容,以此类推。
内容的提问来源于stack exchange,提问作者vick_93h
相关产品推荐
相关产品推荐

