Как удалить все пробелы из строки в Python?
Нагуглил функцию strip() , но она удаляет только первый и последний пробел, а мне нужно все. Например, если a = ‘ sd dfsdf dfsfs’ , то нужно получить a = ‘sddfsdfdfsfs’ . Есть ли такая функция или надо через цикл как-то делать?
Отслеживать
6,343 5 5 золотых знаков 25 25 серебряных знаков 55 55 бронзовых знаков
задан 8 сен 2014 в 15:19
187 2 2 золотых знака 5 5 серебряных знаков 12 12 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
a.replace(' ', '')
Отслеживать
ответ дан 8 сен 2014 в 15:20
4,666 16 16 серебряных знаков 15 15 бронзовых знаков
Спасибо, сейчас попробую.
8 сен 2014 в 15:21
strip() может удалить не только пробел, но и табы и другие символы, которые считаются пробелом, включая Юникодные пробелы, если strip() вызван для Юникодной строки:
>>> import string >>> string.whitespace '\t\n\x0b\x0c\r ' >>> string.whitespace.strip() '' >>> import sys >>> s = ''.join(unichr(i) for i in xrange(sys.maxunicode) if unichr(i).isspace()) >>> s[:15] u'\t\n\x0b\x0c\r\x1c\x1d\x1e\x1f \x85\xa0\u1680\u180e\u2000' >>> s.strip() u''
Поэтому аналог strip() , который удаляет пробел во всей строке: s = ».join(s.split()) .
Или, тоже самое, используя регулярные выражения: s = re.sub(r’\s+’, », s, flags=re.UNICODE) .
Или, в коде, где важна производительность, bytes.translate() может быть использован, чтобы удалить все стандартные ( string.whitespace в С локале) пробелы из ascii строки:
>>> b'a\tb\nc'.translate(None, b'\t\n\v\f\r ') 'abc'
Как при выводе ответа убрать лишние пробелы?
написал код, но при выполнении выдает неверный ответ(выводит все верно, но ставит лишние пробелы перед знаком «.» в первом тесте)
n, m, p = map(int, input().split()) def fun(n, m, k): lstn = list(range(1, n + 1)) lstm = list(range(n + 1, n + m + 1)) lst = ['.'] * 2 flag = 0 if m < n: n, m = m, n lstn, lstm = lstm, lstn lstm.reverse() lstn.reverse() flag = 1 k = min(2 * n * m + 2 * n - m, k) ki, kf = divmod(k, 2 * m + 2) if ki: lstm.extend(lstn[-ki:]) del lstn[-ki:] if kf: lst.insert(1, lstn.pop()) kf -= 1 if kf: for _ in range(m): lstn.append(lstm.pop(0)) kf -= 1 if not kf: break if kf: lstm.insert(0, lst.pop(1)) kf -= 1 if kf: for _ in range(m): lstm.insert(0, lstn.pop()) kf -= 1 if not kf: break if flag: lstn, lstm = lstm, lstn lstm.reverse() lstn.reverse() print(*lstn, *lst, *lstm) fun(n, m, p)
пример работы программы на данный момент: Номер теста 1 Ввод
2 3 2
Ожидаемый результат
1 3 .2. 4 5
Вывод
1 3 . 2 . 4 5
Отслеживать
задан 14 янв 2021 в 2:18
544 1 1 золотой знак 4 4 серебряных знака 17 17 бронзовых знаков
Ваш код совсем не большой. На этом сайте прилагают простыни в разы больше и это норма. Вставьте его напрямую в вопрос, ибо прикреплённая ссылка со временем может стать недействительна.
14 янв 2021 в 2:25
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Используйте аргумент sep='' . Он задаёт разделитель для множества выводимых аргументов функции print .
print(*lstn, *lst, *lstm, sep='')
Если же необходимо, чтобы данная политика разделителей применялась только к одному из аргументов, предлагаю разделить данный print на 3 отдельных, а чтобы между ними на вставлялся перевод строки использовать аргумент end=' ' , указывающий, что после выведенной на консоль информации следует поставить пробел, а не перевод строки. Итог получится такой (насколько я понял, первый аргумент содержит два числа, второй – две точки и число, третий – тоже два числа):
print(*lstn, end=' ') print(*lst, sep='', end=' ') print(*lstm) # Здесь в конце поставится перевод строки, если не нужен, можно так же убрать аргументом end
Как удалить пробелы из строки в Python
Есть несколько способов удалить пробелы из строки в Python. Python String неизменяем, поэтому мы не можем изменить его значение. Любая функция, которая управляет строковым значением, возвращает новую строку, и мы должны явно назначить ее строке, иначе строковое значение не изменится.
Допустим, у нас есть пример строки, определенной как:
s = ' Hello World From Pankaj \t\n\r\tHi There '
Эта строка имеет разные типы пробелов, а также символы новой строки.
Давайте посмотрим на различные функции для удаления пробелов.
strip()
Строковая функция strip() удаляет начальные и конечные пробелы.
>>> s.strip() 'Hello World From Pankaj \t\n\r\tHi There'
Если вы хотите удалить только начальные или конечные пробелы, используйте вместо них функцию lstrip() или rstrip().
replace()
Мы можем использовать replace(), чтобы удалить все пробелы из строки. Эта функция также удалит пробелы между словами.
>>> s.replace(" ", "") 'HelloWorldFromPankaj\t\n\r\tHiThere'
join() с split()
Если вы хотите избавиться от всех повторяющихся пробелов и символов новой строки, вы можете использовать функцию join() с функцией string split().
>>> " ".join(s.split()) 'Hello World From Pankaj Hi There'
translate()
Если вы хотите избавиться от всех пробелов, а также от символов новой строки, вы можете использовать строковую функцию translate().
>>> import string >>> s.translate() 'HelloWorldFromPankajHiThere'

Python удаляет пробелы из строки с помощью Regex
Мы также можем использовать регулярное выражение для поиска пробелов и их удаления с помощью функции re.sub().
import re s = ' Hello World From Pankaj \t\n\r\tHi There ' print('Remove all spaces using RegEx:\n', re.sub(r"\s+", "", s), sep='') # \s matches all white spaces print('Remove leading spaces using RegEx:\n', re.sub(r"^\s+", "", s), sep='') # ^ matches start print('Remove trailing spaces using RegEx:\n', re.sub(r"\s+$", "", s), sep='') # $ matches end print('Remove leading and trailing spaces using RegEx:\n', re.sub(r"^\s+|\s+$", "", s), sep='') # | for OR condition
Remove all spaces using RegEx: HelloWorldFromPankajHiThere Remove leading spaces using RegEx: Hello World From Pankaj Hi There Remove trailing spaces using RegEx: Hello World From Pankaj Hi There Remove leading and trailing spaces using RegEx: Hello World From Pankaj Hi There
Как удалить лишние пробелы, оставив по одному между словами, не затрагивая при этом перенос на другую строку?

Добрый день. Помогите, пожалуйста со строками/списками в Питоне. Есть файл с записанными строками, например: Его нужно преобразовать к читабельному формату. Я его считываю в Список, Список преобразую в Строку и редактирую её:
f = open('./4.txt',"r") BOOK = f.readlines() s = ''.join(BOOK) f1=open('./3.txt',"a") s = s.replace('FILIAL_NAME\n','') s = s.replace('ABON_FIO\n','') f1.writelines(s)

У меня получается следующее: Вопрос в том, как удалить лишние пробелы, оставив по одному между словами, не затрагивая при этом перенос на другую строку? Split() и перенос удаляет, то есть пишется всё сплошной строкой. На каком этапе это лучше сделать (на этапе списка или уже строки) и как? Хотел запустить цикл до конца строки, если текущий символ и следующий символ равняется " ", то replace(s[i],'') , но прочитал, что replace должен быть обязательно чему-то присвоен, и не понял, как это сделать корректно. s = re.sub (r'\s+', '',) Тоже удаляет все пробелы. В общем, подскажите, как это организовать. Спасибо.
