我想将与特定字符串匹配的字符串的内容添加到列表中,但是我遇到了问题。如果我有一个以上的字符串,例如我有字符串"b c d"
以及字符串"e"
,假设sys.argv
中的单词只能是字符串的一部分,怎么能我从"b c d"
的控件直接跳转到"e"
的控件?
begin=1
length=len(sys.argv)
frase="b c d"
def funz(a,b): #funz che torna una stringa
s=""
for arg in sys.argv[a:b]:
#print arg
s+=arg+" "
x=list(s) #to delete the last whitespace
x[len(x)-1]=""
s="".join(x)
print s
return s
l=[]
def funz2(x):
l.append(x)
for i in range(begin,length):
for j in range(length,begin,-1):
if funz(begin, length)==frase :
#print length
#print begin
funz2(frase)
length=length-1
i=+length #this doesn't increment i !
break
#print funz(begin,length)
else:
#print length
#print begin
length=length-1
begin=begin+1
length=len(sys.argv)
print l
答案 0 :(得分:2)
Python for
循环与迭代一起工作; range()
生成for
循环的数字序列,每个迭代i
绑定到该序列中的下一个项目。 i
不会增加for
,也不能在循环中提供帮助。
改为使用while
循环:
i = begin - 1
while i < length:
i += 1
# rest of your loop
现在i
作为循环的一部分递增,你可以再增加它。
您似乎已经了解str.join()
,但您错过了将其用于funz
的机会;整个功能可以替换为:
def funz(a, b):
return ' '.join(sys.argv[a:b])
也可以在你的循环中内联以避免混淆。 funz2
也是如此,它只用于操纵全局。