2016-11-06 3 views
0

У меня есть функция, которая начинается так:Python метод .strip не работает

def solve_eq(string1): 
    string1.strip(' ') 
    return string1 

Я вводящая строку «1 + 2 * 3 ** 4» но оператор возврата не раздевая пространства и я не могу понять, почему. Я даже попробовал .replace() без везения.

+0

Строки неизменны, так что ничего, чтобы действовать на не ожидал их на месте. Используйте возвращаемое значение 'string1.strip()'. –

+0

Мне нужно дополнительно изменить строку, так что я могу сделать что-то вроде string2 = string1.strip ('')? –

+0

Попробуйте. (Это был именно мой смысл). Вы также можете перестроить строку 'string1 = string1.strip ('')'. –

ответ

7

Слой не удаляет пробелы всюду, только в начале и в конце. Попробуйте это:

def solve_eq(string1): 
    return string1.replace(' ','') 

Использование strip() в данном случае является избыточным (очевидно, благодаря комментаторам!).

P.s. Бонус полезно фрагмент кода, прежде чем я свожу SO перерыв (спасибо ОП!):

import re 
a_string = re.sub(' +', ' ', a_string).strip() 
+1

+1 Почему здесь вниз? Это правильный ответ на вопрос OP. Хотя в этом случае вам не нужен '.strip()'. – Jakub

+1

Не спусковой механизм, но у меня есть чувство, что мотивация, лежащая в основе downvoting, вероятно, некоторые люди думают, что на это не следует отвечать. По крайней мере, из моего опыта, который, похоже, является образцом с такими ситуациями в целом. – idjaw

+1

LOL Да, я собираюсь сделать так, чтобы попытаться помочь людям, которые задают чрезвычайно двусмысленные вопросы, чтобы помочь во всех случаях, и теперь это берет бисквит. Я вернусь. – Eugene

0

strip возвращает стесненную строку; он не изменяет исходную строку.

+0

Я подозревал, что это что-то нужно сделать. Любая причина, по которой Python работает таким образом из любопытства? –

+3

@Lanier Как насчет моего комментария, который объясняет это? –

+0

Еще раз спасибо @AndrasDeak –

2

Газа не изменяет исходную строку, так как строки являются неизменными. Вы должны установить возвращаемое значение в стесненную строку или просто вернуть стесненную строку.

Вариант 1

def solve_eq(string1): 
    string1 = string1.replace(' ', '') 
    return string1 

Вариант 2

def solve_eq(string1): 
    return string1.replace(' ', '') 

редактировать: вместо string1.strip(' ') используйте string1.replace(' ', '')

+0

Почему downvote? – Jakub

+1

Для дальнейшего использования, поскольку вы упомянули в своем правлении, что вы должны использовать замену, вы должны изменить весь свой ответ на использование replace, чтобы он полностью исправился. Приветствия. – idjaw

+0

@idjaw Спасибо за указатель! Я новичок в Stack Overflow. –

Смежные вопросы