python - 单词之间只保留一个空格,用replace为什么会出错
PHPz
PHPz 2017-04-18 10:08:36
0
4
619

在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)

PHPz
PHPz

学习是最好的投资!

membalas semua(4)
Ty80

str.find(' ') mengembalikan -1 jika tidak ditemui dan gelung while ialah True to loop infiniti, jadi manakala -1 akan gelung tanpa henti
Juga jadikan str.replace(' ', ' ') berkesan ,
sepatutnya

a = '1    3   5'
while a.find('  ') != -1:
    a = a.replace('  ', ' ')
   
如果只是a.replace('  ', ' '),那么循环执行的永远只是a = '1    3   5', 也就是初始字符串,
小葫芦

str = str.replace(' ',' ');
Dalam JAVA, C#, pembolehubah rentetan itu sendiri tidak boleh diubah. Dengan kata lain, replace tidak mengubah rentetan asal.

洪涛

Izinkan saya melencong dulu, kak, kalau tanya ular sawa, awak labelkan ular sawa saja


Jika anda tidak pasti tentang panjang ruang, anda boleh menggunakan padanan biasa Saya tidak tahu python, jadi saya akan memberi anda idea

Saya telah menyemaknya dan mendapati bahawa semua bukan sifar nombor dalam python mewakili benar. str.find tidak dapat mencari padanan Ia akan mengembalikan -1, dan jika ia menemuinya, ia akan mengembalikan kedudukan padanan pertama, jadi saudara di atas adalah betul akan bersamaan dengan benar apabila ia tidak ditemui Apabila ia mendapati padanan pada kedudukan 0, ia akan dianggap sebagai palsu Jadi jika anda ingin melihat jika str.find menemui padanan, nilaikannya dengan != -1

洪涛

str tidak diubah oleh tugasan. replace mengembalikan rentetan baharu dan bukannya mengubah suai terus str

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan