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