在python中,字符串是沒有contains函數的,不過可以使用find來代替。現在有一串單詞,有的相鄰兩個單詞之間可能不止一個空格,現在我只想保留一個空格,使用下面的辦法就是無效的,不知道為什么這樣會出現死循環。我知道可以使用' '.join(a.split())來解決問題,但是下面的代碼不知道為什么會出錯,是我的思想錯誤,還是其他原因?在java等其他語言里面,使用這種思想可行么?def StringUnderLine(str):
str.strip();
n=0;
while str.find(' '):
str.replace(' ',' ')
n=n+1
print(n,end='')
print(str,end='')
a="1 2 3 4 5 "b="1 "c=" 2"d="abc def"StringUnderLine(a)StringUnderLine(b)StringUnderLine(c)StringUnderLine(d)
4 回答

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
str.find(' ')如果沒有找到返回-1 而循環while為True無限循環, 所以while -1會無限循環下去
還有要使str.replace(' ', ' ')有效,
應該
a = '1 3 5'
while a.find(' ') != -1:
a = a.replace(' ', ' ')
如果只是a.replace(' ', ' '),那么循環執行的永遠只是a = '1 3 5', 也就是初始字符串,

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
先說句題外話,你這位兄弟你問python就只貼python標簽,干嘛把這么多語言的標簽都貼上
如果你不確定空格長度,可以拿正則匹配,python我不懂,我就說個思路
隨便查了一下,python里非0的數都表示true,str.find找不到匹配會返回-1,找到會返回第一個匹配的位置,所以上面的兄弟說的對,你拿他當條件,找不到時候相當于true,找到第0位的匹配時反而會被當成false,所以想要看str.find找沒找到匹配,判斷一下!= -1才對
添加回答
舉報
0/150
提交
取消