我正在寻找一种高效的方式(也许我不知道),只要每个连续的字符都符合条件,就可以逐个字符地处理一个字符串。一旦不匹配,整个shebang都可以终止。
这是循环开始:
while (char == '-' or char == '+') for char in string:
如何有效编码此行?
答案 0 :(得分:2)
要遍历序列并在不满足条件时终止循环,可以使用break
:
for char in string:
if char not in ('-', '+'):
break
do_something_with(char)
但是,如果您只想收集符合条件的项目,则可能正在寻找itertools.takewhile
:
def find_sign_prefix(s):
sign_prefix = list(itertools.takewhile(lambda char: char in ('-', '+'), s))
return sign_prefix
print find_sign_prefix("--+-++---3.141592+-+")
# '--+-++---'
或者专门用于检查字符串的前缀,可以使用正则表达式:
def find_sign_prefix(s):
# `[+-]*` means "a '+' or '-' character, zero or more times";
# `re.search` only matches at the beginning of a string;
# group 0 is the matched substring
return re.search([+-]*, s).group(0)
答案 1 :(得分:0)
使用while循环遍历每个字符,如果要查找的条件出现,则中断循环
string = '....'
for i in range(len(string)-1):
char_i = string[i]
char_i_1 = string[i+1]
if not (char_i == '-' and char_i_1 == '+'):
break
答案 2 :(得分:0)
您是否要根据这样的条件检查每个字符?
string = 'AB++-A+B-'
for char in string:
if char == '+' or char == '-':
# Do something
print(char)