Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:regex vs find(),strip()_Python_Regex_String - Fatal编程技术网

Python:regex vs find(),strip()

Python:regex vs find(),strip(),python,regex,string,Python,Regex,String,我正在学习Python,需要格式化从IMAP接收的“From”字段。我尝试了使用str.find()和str.strip(),还使用了regex。使用find()等。我的函数运行速度比使用re快很多(我对它进行了计时)。那么,什么时候使用re更好?有没有人有与此相关的好链接/文章?Python文档显然没有提到……find只匹配一个精确的字符序列,而正则表达式匹配一个模式。当然,只查找精确序列的速度更快(即使您的正则表达式模式也是一个精确序列,仍然会涉及一些开销) 因此,如果您知道确切的序列,则应

我正在学习Python,需要格式化从IMAP接收的“From”字段。我尝试了使用
str.find()
str.strip()
,还使用了regex。使用find()等。我的函数运行速度比使用re快很多(我对它进行了计时)。那么,什么时候使用re更好?有没有人有与此相关的好链接/文章?Python文档显然没有提到……

find
只匹配一个精确的字符序列,而正则表达式匹配一个模式。当然,只查找精确序列的速度更快(即使您的正则表达式模式也是一个精确序列,仍然会涉及一些开销)

因此,如果您知道确切的序列,则应使用
find
,如果您不知道,则应使用正则表达式(或其他内容)。您应该使用的确切方法实际上取决于您所面临问题的复杂性


作为旁注,python
re
模块提供了一个
compile
方法,允许您在重复使用正则表达式时预编译它。如果您多次使用相同的模式,这可以显著提高速度。

find
仅匹配精确的字符序列,而正则表达式匹配模式。当然,只查找精确序列的速度更快(即使您的正则表达式模式也是一个精确序列,仍然会涉及一些开销)

因此,如果您知道确切的序列,则应使用
find
,如果您不知道,则应使用正则表达式(或其他内容)。您应该使用的确切方法实际上取决于您所面临问题的复杂性


作为旁注,python
re
模块提供了一个
compile
方法,允许您在重复使用正则表达式时预编译它。如果您多次使用相同的模式,这可以显著提高速度。

如果您想做一些复杂的事情,应该使用
re
。它比使用字符串方法更具可伸缩性

字符串方法很适合做一些简单的事情,不值得为正则表达式费心


所以,这取决于你在做什么,但通常你应该使用正则表达式,因为它们更强大。

如果你想做一些复杂的事情,你应该使用
re
。它比使用字符串方法更具可伸缩性

字符串方法很适合做一些简单的事情,不值得为正则表达式费心


所以,这取决于你在做什么,但通常你应该使用正则表达式,因为它们更强大。

谢谢。我注意到两者之间有一条细微的界限:我运行
str.find('abb')
,然后运行
str[:str.find('abb')]
。。。多次修改字符串。。。而且它仍然比re工作得更快。我想你真的必须计时,看看在什么时候这种“开销”是值得的。我现在就用
compile
进行测试谢谢。我注意到两者之间有一条细微的界限:我运行
str.find('abb')
,然后运行
str[:str.find('abb')]
。。。多次修改字符串。。。而且它仍然比re工作得更快。我想你真的必须对它计时,看看这“开销”值多少钱。现在我将尝试使用
compile
进行测试