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

在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

学习是最好的投资!

全員に返信(4)
Ty80

str.find(' ') は見つからない場合は -1 を返し、while ループは無限ループするために True なので、while -1 は無限ループします
str.replace(' ', ' ') も有効にします。
すべき

リーリー
いいねを押す +0
小葫芦

str = str.replace(' ',' ');
JAVA、C# では、文字列変数自体は不変です。 つまり、置換しても元の文字列は変更されません。

いいねを押す +0
洪涛

まず話が逸れますが、Python に尋ねると、あなたは Python だけにラベルを付けるのはなぜでしょうか。


スペースの長さがわからない場合は、通常のマッチングを使用できます。私は Python を知りません。
調べてみたところ、すべてゼロではありませんでした。 Python の数字は true を表します。 str.find は一致するものを見つけられない場合は -1 を返し、見つかった場合は最初に一致した位置を返します。 したがって、これを条件として使用すると、これは正しいことになります。見つからない場合は true と同等になります。位置 0 で一致するものが見つかった場合は false と見なされます。そのため、str.find が一致するかどうかを確認したい場合は、!= -1

いいねを押す +0
洪涛

str は代入によって変更されていません。 replace は str

を直接変更するのではなく、新しい文字列を返します。
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート