Python如何从字符串中拆分数字、特殊字符及后接数字的+/-号
字符串拆分实现方案
给定原始字符串
a = ';1'b = '2+3'c = '32'd = '12-'e = '2+;'f = '2'
预期拆分输出
a: [';', '1']b: ['2+', '3']c: ['3', '2']d: ['1', '2-']e: ['2+', ';']f: ['2', None]
拆分规则
+、-号始终跟在数字之后,最终输出为长度固定为2的列表,不足第二个元素补None。
Python实现代码
def split_str(input_s: str) -> list: tokens = [] str_len = len(input_s) index = 0 while index < str_len: # 数字后紧跟+/-时,合并为一个token if index < str_len - 1 and input_s[index].isdigit() and input_s[index+1] in '+-': tokens.append(input_s[index] + input_s[index+1]) index += 2 else: tokens.append(input_s[index]) index += 1 # 长度不足2时补None if len(tokens) == 1: tokens.append(None) return tokens # 测试用例 if __name__ == "__main__": test_case_map = { "a": ";1", "b": "2+3", "c": "32", "d": "12-", "e": "2+;", "f": "2" } for key, val in test_case_map.items(): print(f"{key}: {split_str(val)}")
运行输出
a: [';', '1'] b: ['2+', '3'] c: ['3', '2'] d: ['1', '2-'] e: ['2+', ';'] f: ['2', None]
内容的提问来源于stack exchange,提问作者Jatinder011
相关产品推荐
相关产品推荐

