ziz*_*ler 7 python for-loop while-loop
我希望通过匹配较长字符串中的模式的子字符串来做某事(不仅仅是替换).如果赋值是一个返回值的表达式,就像在C和大多数其他编程语言中一样,那就是(使用C语法和Python语义):
while ( match = re.search( pat, str ) ) {
/* do something to the string, using the match object,
in addition to removing or replacing the substring
*/
}
Run Code Online (Sandbox Code Playgroud)
或者更详细地说,避免使用赋值作为表达式:
for ( match = re.search( pat, str );
match;
match = re.search( pat, str ) ) {
/* do something to the string, using the match object */
}
Run Code Online (Sandbox Code Playgroud)
在大多数编程语言中,至少有一种是可能的:C,C++,Java,Perl,Javascript,......但它们似乎都不可能在Python中使用.是否存在pythonic等价物(不涉及带有中断或继续声明的kludgey混乱)?
您可能正在寻找finditer:
返回迭代器,该迭代器在字符串RE模式的所有非重叠匹配上产生匹配对象。从左到右扫描该字符串,并以找到的顺序返回匹配项。空匹配项将包括在结果中,除非它们碰到另一个匹配项的开头。
#!/usr/bin/env python3
import re
s = "abcabcabc";
it = re.finditer("(\w)", s)
for m in it:
print(m.groups())
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/env python3
import re
s = "abcabcabc";
it = re.finditer("(\w)", s)
for m in it:
print(m.groups())
Run Code Online (Sandbox Code Playgroud)