2016-09-06 2 views
-1

Я хочу удалить пробелы в строке, которая находится рядом с /, сохраняя остальные пробелы.Python условно удалять пробелы

Например, скажем, у меня есть строка 98/100 xx 3/ 4 and 5/6. Желательным результатом для моего примера будет 98/100 xx 3/4 and 5/6. (Так что я мог бы использовать .split(' ') в качестве следующего шага и извлечь эти значащие числа, т. Е. 98/100, 3/4 и 5/6 в качестве моих окончательных результатов.) Примечание. Я хочу только найти /, не нужно беспокоиться о других операторах.

Я знаю, что я должен использовать re для этого, но я не могу понять это. Любая помощь приветствуется!

--------------------- Мой подход Ниже ------------------

Я использовал [index_num.end(0) for index_num in re.finditer('/', test)], где test = '98/100 xx 3/ 4 and 5/6', чтобы найти индекс /, а затем проверить, является ли предыдущее или следующее пробелом. Это не идеально, и я считаю, что есть более простые способы.

+2

«но я не могу понять» <- покажите нам, что вы пробовали, и мы покажем вам, что вам не хватает;] – inspectorG4dget

+0

что такое xx, и вы просто хотите заменить пространство между цифрами и любыми операторами? Также, вероятно, проще просто извлечь * значимые числа *. –

+0

@ inspectorG4dget Я использовал '[index_num.end (0) для index_num в re.finditer ('/', test)]', чтобы найти индекс '/', а затем проверить, является ли предыдущее или следующее пробелом. Это не идея, и я считаю, что есть более простые способы. Изменим мой вопрос и добавим их, спасибо! – Chianti5

ответ

4

Вы можете удалить пробелы до и после косой черты с str.replace вместо регулярных выражений:

>>> '98/100 xx 3/ 4 and 5/6'.replace(' /','/').replace('/ ','/') 
'98/100 xx 3/4 and 5/6' 
+0

Это не удастся для '' 98/100 xx 3/4 и 5/6'.replace ('/','/').replace('/', '/') 'или любой строки с более чем одним пробелом между числом и '/' –

3

подсказка: регулярное выражение, которое будет найти любое количество пробелов (не только пробелы, но и вкладки и т.д.) вокруг косой черты: r'\s*/\s*'. Регулярное выражение находится между апострофами. Период - это только конец моего предложения, а r указывает Python обрабатывать строку внутри апострофов как «сырую» строку.

Если вы не хотите найти произвольные символы пробелов, но только сам символ пробела, регулярное выражение равно r' */ *'. Обратите внимание на пространство перед звездочкой.

Остальное я оставляю вам, поскольку это звучит как проблема домашних заданий.

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