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

在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(' ', ' ')를 유효하게 만듭니다.
해야 한다

으아아아
小葫芦

str = str.replace(' ',' ');
JAVA, C#에서는 문자열 변수 자체가 불변입니다. 즉, 바꾸기는 원래 문자열을 변경하지 않습니다.

洪涛

먼저 이야기를 하자면 형님, 파이썬이라고 하면 파이썬에만 라벨을 붙입니다. 왜 이렇게 많은 언어에 라벨을 붙이나요?


공간의 길이가 확실하지 않은 경우 일반 매칭을 사용하면 됩니다. 저는 Python을 모르므로 아이디어를 제공합니다.

방금 확인해보니 0이 아닌 숫자가 모두 나왔습니다. Python에서는 true를 나타냅니다. str.find는 일치하는 항목을 찾을 수 없으며, 이를 찾으면 첫 번째 일치하는 위치를 반환합니다. 따라서 위의 형제가 조건으로 사용하면 됩니다. 찾을 수 없는 경우 true와 동일합니다. 위치 0에서 일치하는 항목을 찾으면 false로 간주됩니다. 따라서 str.find가 일치하는 항목을 찾았는지 확인하려면 != -1
으로 판단하세요.

洪涛

str은 할당에 의해 변경되지 않았습니다. 교체는 str

을 직접 수정하는 대신 새 문자열을 반환합니다.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿