嗨,我有 python 的基本知识,但不太熟悉整个 pip/env 的东西,也不熟悉 VScode,所以我有点不确定从哪里开始。我写了一个简单的脚本,它是另一个非 python 项目的一部分。
脚本是:
import re
re_name = re.compile("name=\"(+)\"")
with open('data.xml') as f:
lines = f.readlines() # list containing lines of file
for line in lines:
if line:
if (re_name.match(line)):
print (line)
else:
print ("No match for " + line)
我得到以下内容
PS REDACTED > python svg.py
Traceback (most recent call last):
File "svg.py", line 3, in <module>
re_name = re.compile("name=\"(+)\"")
File "C:\Users\REDACTED\AppData\Local\Programs\Python\Python36-32\lib\re.py", line 233, in compile
return _compile(pattern, flags)
File "C:\Users\REDACTED\AppData\Local\Programs\Python\Python36-32\lib\re.py", line 301, in _compile
p = sre_compile.compile(pattern, flags)
File "C:\Users\REDACTED\AppData\Local\Programs\Python\Python36-32\lib\sre_compile.py", line 562, in compile
p = sre_parse.parse(p, flags)
File "C:\Users\REDACTED\AppData\Local\Programs\Python\Python36-32\lib\sre_parse.py", line 855, in parse
p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
File "C:\Users\REDACTED\AppData\Local\Programs\Python\Python36-32\lib\sre_parse.py", line 416, in _parse_sub
not nested and not items))
File "C:\Users\REDACTED\AppData\Local\Programs\Python\Python36-32\lib\sre_parse.py", line 765, in _parse
p = _parse_sub(source, state, sub_verbose, nested + 1)
File "C:\Users\REDACTED\AppData\Local\Programs\Python\Python36-32\lib\sre_parse.py", line 416, in _parse_sub
not nested and not items))
File "C:\Users\REDACTED\AppData\Local\Programs\Python\Python36-32\lib\sre_parse.py", line 616, in _parse
source.tell() - here + len(this))
sre_constants.error: nothing to repeat at position 7
我无法理解这个错误消息,也看不到代码有任何问题(但很可能遗漏了一些东西!)所以我想知道这是否与我的 python 安装有关。我安装了 Python 扩展,但是当我尝试
Python: Select Interpreter
时,出现此错误
Python版本是
> python --version
Python 3.6.2
这似乎很旧,但我不确定如何以正确的方式升级(我假设 vscode 扩展会处理这个问题)。
感觉我只是错过了一件愚蠢的事情,但有太多我不明白的事情,不知道该去哪里。
+
表示more than once
。例如,正则表达式模式 a+
可以匹配 aa
和 aaa
。+
必须遵循您想要至少匹配一次的模式。因此,单个 +
没有意义,并且会给出错误 nothing to repeat
。+
本身,请使用 \+
。