Подтвердить что ты не робот

Предпочтительный способ удаления пробелов из строки

Я хочу удалить все пробелы из строки.

"как fa sdf sdfsdf"

Результат:

"asfasdfsdfsdf"

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

1.

"".join(" as fa   sdf sdfsdf ".split())

2.

" as fa   sdf sdfsdf ".replace(" ", "")

И я полагаю, что их больше. Какой из них предпочтительнее?

4b9b3361

Ответ 1

Я считаю, что лучшим и наиболее эффективным методом является вторая версия " as fa sdf sdfsdf ".replace(" ", ""), в качестве доказательства вы можете использовать модуль timeit:

  • python -m timeit '"".join(" as fa sdf sdfsdf ".split())'

    1000000 loops, best of 3: 0.554 usec per loop

  • python -m timeit '" as fa sdf sdfsdf ".replace(" ", "")'

    1000000 loops, best of 3: 0.405 usec per loop

Ответ 2

replace(" ", "") является самым ясным и самым кратким.

Ответ 3

Используйте это для одновременного удаления всего пробела:

import re

s = ' as fa   sdf sdfsdf '
s = re.sub(r'\s+', '', s)

s
=> 'asfasdfsdfsdf'

Преимущество этого подхода заключается в том, что он устраняет все пробелы между символами - один, два, независимо от того, сколько их есть, потому что регулярное выражение r'\s+' соответствует "одному или нескольким" пробельным символам, включая пробелы, вкладки и т.д.

Ответ 4

Использование replace не удалит все пробельные символы (например, новые строки, вкладки):

>>> 'abc\t\ndef'.replace(" ", "")
'abc\t\ndef'

Я предпочитаю string.translate:

>>> import string
>>> 'abc\t\ndef'.translate(None, string.whitespace)
'abcdef'

EDIT: string.translate не работает для строк Unicode; вы можете использовать re.sub('\s', '', 'abc\n\tdef') вместо этого.

Ответ 5

регулярное выражение

>>> str = "   as fa sdf sdfsdf  "
>>> import re
>>> re.sub(r'\s', '', str)

Ответ 6

re.sub(" ","", s) - мой любимый.

Ответ 7

Просто чтобы выбросить еще один из микса:

from string import whitespace
ws = set(whitespace)
''.join(ch for ch in my_string if ch not in ws)

Ответ 8

Regex прост и работает. split() немного сложнее. Regex предпочтительнее split().