为什么python3.7返回的输出与python3.6(Python)不同重新分割()?

2024-10-01 07:51:02 发布

您现在位置:Python中文网/ 问答频道 /正文

#test.py
import re

tmp = {'value': 'V-4056366 ', 'bool': False}
def get_split():
    value = str(tmp['value']).strip()
    if value=='':
        return None
    if value.isalnum(): 
        return None
    return re.split(r'[-.]*',value)

print(get_split())

如果我用预装的Python3.7运行上面的代码,我会得到以下输出(我真正想要得到的输出)。

^{pr2}$

现在使用anaconda 3.6.5:

[pc@pc-pc PasivicSoftware]$ python3 test.py
/home/pc/anaconda3/lib/python3.6/re.py:212: FutureWarning: split() requires a non-empty pattern match.
  return _compile(pattern, flags).split(string, maxsplit)
['V', '4056366'][pc@pc-pc PasivicSoftware]
$ which python3
/home/pc/anaconda3/bin/python3

Python3.7是否改变了重新分割?如果是这样的话,我怎样才能得到同样的Python输出(列表中只有两个元素)


Tags: pytestrenonehomegetreturnif
1条回答
网友
1楼 · 发布于 2024-10-01 07:51:02

在3.6中,你会得到警告,这将发生:

FutureWarning: split() requires a non-empty pattern match.

由于[-]*可以匹配零长度的字符串,因此它在3.7中做到了这一点。你可以用一些不需要的东西来防止这种情况,-或{}都可以(取决于你想为V 12345发生什么。在

如果你不关心连续的-符号,你甚至可以用value.split('-')代替,而不需要re。在

相关问题 更多 >