分隔符连续出现两次时如何拆分字符串并保留其中一个分隔符
解决方案
方法1:分割后遍历处理(无需引入依赖)
你第一次用+分割得到的结果已经包含足够信息,空字符串的位置就对应需要保留的+,遍历处理即可:
s = 'apple/SP++/SW+orange/NNG++/FG+melon/SL+food/JKG' split_list = s.split('+') result = [] index = 0 length = len(split_list) while index < length: current = split_list[index] # 空元素代表当前位置需要保留加号作为元组第一个元素 if not current: index += 1 # 去除路径开头的斜杠后拆分 _, tag = split_list[index].lstrip('/').split('/') result.append(('+', tag)) else: word, tag = current.split('/') result.append((word, tag)) index += 1 print(result) # 输出:[('apple', 'SP'), ('+', 'SW'), ('orange', 'NNG'), ('+', 'FG'), ('melon', 'SL'), ('food', 'JKG')]
方法2:正则匹配(代码更简洁)
直接用正则表达式匹配所有符合规则的元组项,匹配规则为:第一个元素是+或纯单词字符,第二个元素是斜杠后的大写字母序列:
import re s = 'apple/SP++/SW+orange/NNG++/FG+melon/SL+food/JKG' result = re.findall(r'(\+|\w+)/([A-Z]+)', s) print(result) # 输出:[('apple', 'SP'), ('+', 'SW'), ('orange', 'NNG'), ('+', 'FG'), ('melon', 'SL'), ('food', 'JKG')]
内容的提问来源于stack exchange,提问作者july
相关产品推荐
相关产品推荐

