亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

單詞之間只保留一個空格,用replace為什么會出錯

單詞之間只保留一個空格,用replace為什么會出錯

慕妹3242003 2019-02-20 10:53:08
在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', 也就是初始字符串,
查看完整回答
反對 回復 2019-03-04
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

str = str.replace(' ',' ');
JAVA, C#里, string變量本身不可變。 也就是說replace不改變原字符串。

查看完整回答
反對 回復 2019-03-04
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

先說句題外話,你這位兄弟你問python就只貼python標簽,干嘛把這么多語言的標簽都貼上


如果你不確定空格長度,可以拿正則匹配,python我不懂,我就說個思路
隨便查了一下,python里非0的數都表示true,str.find找不到匹配會返回-1,找到會返回第一個匹配的位置,所以上面的兄弟說的對,你拿他當條件,找不到時候相當于true,找到第0位的匹配時反而會被當成false,所以想要看str.find找沒找到匹配,判斷一下!= -1才對

查看完整回答
反對 回復 2019-03-04
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

str沒有被賦值改變。replace是返回新的字符串,而不是直接修改str

查看完整回答
反對 回復 2019-03-04
  • 4 回答
  • 0 關注
  • 521 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號