python - re.split() 错误的解释?

标签 python split

我相信您经常看到这种情况,但只是想警告您,我对编码总体来说还很陌生,还有很多东西需要学习。只要有时间,我就一直尝试通过个人项目和 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/

相关文章:

java - 正则表达式 (java) 帮助

java - 将字符串拆分为几个两个字符串

python - 为什么 "a is b"在交互模式下和从脚本运行时表现不同?

python - 如何在没有WINWORD的情况下解析.doc文档?

python pip 为 entry_points 配置 python 可执行文件

python - 如何使用 PyGithub 将图像文件上传到 Github?

python - 将时间单位作为变量传递给时间增量函数中的关键字参数。

javascript - 如何在JavaScript中分割二维数组?

arrays - 来自拆分的 AWK 数组未排序

python 3 : Split string under certain condition