面试题答案
一键面试def split_and_extract_numbers(s):
try:
parts = s.split(' end:')
if len(parts) != 2:
raise ValueError("Invalid string format, missing 'end:'")
start_part, end_part = parts
start_substrings = start_part.split(':')[1]
end_substrings = end_part
delimiters_start = [',', ';', '|']
delimiters_end = ['-', ',']
numbers = []
current_delimiter_index = 0
sub_start = start_substrings
while sub_start:
sub_parts = sub_start.split(delimiters_start[current_delimiter_index], 1)
if len(sub_parts) == 1:
numbers.extend(sub_parts[0].split(delimiters_end[0]))
break
numbers.extend(sub_parts[0].split(delimiters_end[0]))
sub_start = sub_parts[1]
current_delimiter_index = (current_delimiter_index + 1) % len(delimiters_start)
numbers.extend(end_substrings.split(delimiters_end[0]))
result = []
for num in numbers:
if num.isdigit():
result.append(int(num))
return result
except Exception as e:
print(f"An error occurred: {e}")
return []
s = 'start:1,2;3|4 end:5-6,7;8'
print(split_and_extract_numbers(s))
上述代码首先将字符串根据 end:
进行分割,然后分别处理 start
到 end
之间以及 end
之后的部分。按照给定的分隔符顺序对字符串进行分割,并提取其中的数字组成列表。同时使用 try - except
块来捕获可能出现的异常并进行处理,确保程序的健壮性。