草庐IT

re-written

全部标签

python - 在 Python 中检测 re (regexp) 对象

我想知道什么是正确的pythonic向后和向前兼容的方法,如何检查一个对象是否是编译的re对象。isinstance方法不容易使用,而生成的对象声称是_sre.SRE_Pattern对象:>>>importre>>>rex=re.compile('')>>>rex但是没有这样的:>>>import_sre>>>_sre.SRE_PatternAttributeError:'module'objecthasnoattribute'SRE_Pattern'>>>importsre__main__:1:DeprecationWarning:Thesremoduleisdeprecated,p

python - 从已编译的 re 中获取模式?

假设我已经创建了一个编译后的re:x=re.compile('^\d+$')有没有办法从x中提取模式字符串(^\d+$)? 最佳答案 你可以拿回来x.pattern来自PythondocumentationonRegularExpressionObjects 关于python-从已编译的re中获取模式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/190967/

python - 使用 re.match 过滤字符串列表时失败

这个问题在这里已经有了答案:Whatisthedifferencebetweenre.searchandre.match?(9个回答)关闭3年前。我想使用正则表达式过滤python中的字符串列表。在以下情况下,仅保留扩展名为“.npy”的文件。不起作用的代码:importrefiles=['/a/b/c/la_seg_x005_y003.png','/a/b/c/la_seg_x005_y003.npy','/a/b/c/la_seg_x004_y003.png','/a/b/c/la_seg_x004_y003.npy','/a/b/c/la_seg_x003_y003.png','

c++ - 并发 : Are Python extensions written in C/C++ affected by the Global Interpreter Lock?

Python的强项之一是易于编写C和C++扩展以加速代码的处理器密集型部分。这些扩展可以避免GlobalInterpreterLock还是它们也受到GIL的限制?如果不是,那么这个“易于扩展”比我之前意识到的更具有killer锏。我怀疑答案不是简单的是或否,但我不确定,所以我在StackOverflow上问这个问题。 最佳答案 是的,对C扩展的调用(从Python调用的C例程)仍受GIL约束。但是,您可以手动在C扩展中释放GIL,只要在将控制权返回给PythonVM之前小心地重新声明它即可。有关信息,请查看Py_BEGIN_ALLO

python - 薛定谔变量 : the __class__ cell magically appears if you're checking for its presence?

这里有一个惊喜:>>>classB:...print(locals())...deffoo(self):...print(locals())...print(__class__inlocals().values())...{'__module__':'__main__','__qualname__':'B'}>>>B().foo(){'__class__':,'self':}True似乎仅仅提及__class__就被解析器显式检查了?否则我们应该得到类似的东西NameError:name'__class__'isnotdefined确实,如果您修改为仅检查键,即在locals()中检查

python - 为什么 re.groups() 不为我的一个正确匹配的组提供任何东西?

当我运行这段代码时:printre.search(r'1','1').groups()我得到()的结果。但是,.group(0)给了我匹配项。不应该groups()给我一些包含匹配的东西吗? 最佳答案 据我所知,.groups()返回一个由记住的组组成的元组。IE。正则表达式中括在括号中的那些组。所以如果你要写:printre.search(r'(1)','1').groups()你会得到('1',)作为您的回应。通常,.groups()将返回正则表达式中包含在括号内的所有对象组的元组。

python - 为什么忽略大小写标志 (re.I) 在 re.sub() 中不起作用

这个问题在这里已经有了答案:Pythonre.subwithaflagdoesnotreplacealloccurrences(3个回答)关闭5年前。来自pydoc:re.sub=sub(pattern,repl,string,count=0,flags=0)Returnthestringobtainedbyreplacingtheleftmostnon-overlappingoccurrencesofthepatterninstringbythereplacementrepl.replcanbeeitherastringoracallable;ifastring,backslashe

python - 如何用 python re.sub 仅替换部分匹配项

我需要用一个reg表达式匹配两种情况并进行替换'long.file.name.jpg'->'long.file.name_suff.jpg''long.file.name_a.jpg'->'long.file.name_suff.jpg'我正在尝试执行以下操作re.sub('(\_a)?\.[^\.]*$','_suff.',"long.file.name.jpg")但这是删除扩展名“.jpg”,我得到了long.file.name_suff。而不是long.file.name_suff.jpg我知道这是因为[^.]*$部分,但我不能排除它,因为我必须找到最后一次出现的“_a”来替换或

python - 什么是更快的操作,re.match/search 或 str.find?

对于一次性字符串搜索,简单地使用str.find/rfind是否比使用re.match/search更快?也就是说,对于给定的字符串s,我应该使用:ifs.find('lookforme')>-1:dosomething或ifre.match('lookforme',s):dosomethingelse? 最佳答案 问题:使用timeit最好回答哪个更快。fromtimeitimporttimeitimportredeffind(string,text):ifstring.find(text)>-1:passdefre_find(s

python - 在 re.sub 替换模式中处理对捕获组的反向引用

我想获取字符串0.71331,52.25378并返回0.71331,52.25378-即只查找一个数字、一个逗号、一个空格和一个数字,然后剥离出空间。这是我当前的代码:coords='0.71331,52.25378'coord_re=re.sub("(\d),(\d)","\1,\2",coords)printcoord_re但这给了我0.7133,2.25378。我做错了什么? 最佳答案 您应该对正则表达式使用原始字符串,请尝试以下操作:coord_re=re.sub(r"(\d),(\d)",r"\1,\2",coords)使