我相信您经常看到这种情况,但只是想警告您,我对编码总体来说还很陌生,还有很多东西需要学习。只要有时间,我就一直尝试通过个人项目和 YouTube 来自学。
长版:当我使用 split 函数时,我总是收到错误,但我仍然得到一个值。本质上,我的函数应该做的是以度°分'秒”为单位的角度或方位,或者例如“N 38°43'23\”E”为十进制数。我利用方位角小于 90 度的优势,使用索引来查找字符串中的数字来转换角度。然而,如果角度不是方位角,我想不出一种方法来找出度数的十位数来拉出数字,所以我尝试在度数符号处拆分它。然而,当它这样做时,它会返回一个错误,指出 split() 需要非空模式匹配。这是什么意思?该代码仍然有效,但总是返回此错误。
简短版本:这是我的代码:
def decimal(x): # converts degrees-minutes-seconds to decimal
dms = list(x)
if dms[0] == 'N' or dms[0] == 'S':
degrees = ((int(dms[2]) * 10) + int(dms[3]))
minutes = ((int(dms[-8]) * 10) + int(dms[-7])) / 60
seconds = ((int(dms[-5]) * 10) + int(dms[-4])) / 3600
else:
placeholder = re.split(r'\u00b0*', x)
degrees = int(placeholder[0])
minutes = ((int(dms[-6]) * 10) + int(dms[-5])) / 60
seconds = ((int(dms[-3]) * 10) + int(dms[-2])) / 3600
return degrees + minutes + seconds
当我运行它时,我得到十进制数,但我也得到:
FutureWarning: split() requires a non-empty pattern match.
return _compile(pattern, flags).split(string, maxsplit)
我查看了有关此错误的其他问题,但没有答案解释如何避免此错误,或者该错误的真正含义。感谢您的任何帮助。另外,您看到的任何建议或更正将不胜感激!
最佳答案
您遇到的不是错误,而是警告。
首先,我认为您不应该使用原始字符串,您需要 '\u00b0'
字符。而 'c*'
将匹配 0 个或多个 c
,因此它匹配空字符串。我相信这就是警告的目的。我建议你使用
re.split('\u00b0', x)
或者更好,只是
x.split('\u00b0')
关于python - re.split() 错误的解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40063797/