我现在盯着这一段时间了,希望我错过了一些明显的东西。希望有人能够指出这一点。 我正在使用以下正则表达式以明文方式查找文件路径:
p = re.compile(r'(([A-Za-z]:[\\/])|(\.\.[\\/])+)([A-Za-z0-9\-_]+[\\/])+[A-Za-z0-9\-_]+\.[a-zA-Z]+')
我知道这太可怕了,但它确实有效。至少;当我运行我的python脚本时。我需要编译为exe以拥有自包含的东西,并且我正在使用以下内容:
from distutils.core import setup
import py2exe
import os
taggerData = [('nltk_data/taggers', ['C:/Users/username/AppData/Roaming/nltk_data/taggers/conll2000_aubt.pickle'])]
setup(
console=[{'script': 'flurp.py'}],
options={
'py2exe':
{
'bundle_files': 2,
'includes': ['lxml.etree', 'lxml._elementpath'],
'compressed': True,
'excludes': ['_ssl'],
}
},
zipfile = None,
data_files=taggerData
)
现在当我有“C:\ some \ file \ path \ here.txt”之类的东西时;当我运行我的python脚本时它会得到一个匹配。但是,当我编译我的脚本然后运行时,我没有得到同样的匹配。我需要一些时间/工作来制作一个最小的脚本才能完全重现这一点,所以基本上我只是想知道是否有人遇到类似的问题,正则表达式在编译时表现不同(使用py2exe(0.9.2.2))?
答案 0 :(得分:0)
在对我的正则表达式进行一些实验后,发现以下情况有效:
p = re.compile(r'(([A-Za-z]:[\\/]+)|(\.\.[\\/]+)+)([A-Za-z0-9\-_]+[\\/]+)+[A-Za-z0-9\-_]+\.[a-zA-Z]+')
唯一的区别是在我的角色类[\ /]之后添加+(例如反斜杠或正斜杠)。这不是一个出色的解决方案,因为它会导致我的正则表达式不那么精确,但是双重逃避对我也没有帮助。
我希望这有助于其他人遇到同样的问题。但是,由于我的解决方案感觉不太合适,我会留下让其他人评论的问题,或者更详细地解释一下这里发生了什么(或者它只是py2exe中的一个已知错误?)< / p>