number_list = [None]
beginning_of_current_number = 0
for index in range(len(str)-3):
if (str[index+1] in ["+","-"] & str[index+3] == "."):
number_list.append(float(str[beginning_of_current_number:index+1]))
beginning_of_current_number = index+1
elsif (str[index+2] == "." & beginning_of_current_number != index-1):
number_list.append(float(str[beginning_of_current_number:index+1]))
beginning_of_current_number = index+1
#the above won't get the last number, so
number_list.append(float(str[beginning_of_current_number:-1]))
任何时候提取数据时,都要对数据的形式进行假设,然后告诉计算机根据这些假设寻找模式。获得正确的假设与为您选择的假设获得正确的代码一样重要。在这种情况下,您可能会假设每个数字由一个数字后跟一个小数位组成,后跟更多的数字后跟“e”,后跟“+”或“-”,然后后跟更多的数字。如果你知道每一组数字的长度,你就可以根据这些长度进行分割。最可能一致的长度是小数点前的位数;如果数字是科学记数法,那么就只有一个数字。然而,在这个数字之前也可能有一个减号。因此,您可以遍历字符串,并检查是否有:(下一个字符是+或-,当前+3是。)或(当前+2是。);每次发生这种情况,你就会得到另一个号码
这个正则表达式并不漂亮,但它似乎适用于您的示例:
Debuggex Demo
意思是:字符串或符号的开头,后跟数字和点,可能后跟
e
,后跟符号和数字相关问题 更多 >
编程相关推荐