Я пытаюсь удалить все пробелы / вкладки / символы новой строки в python 2.7 в Linux.
Я написал это, это должно сработать:
myString="I want to Remove all white \t spaces, new lines \n and tabs \t"
myString = myString.strip(' \n\t')
print myString
выход:
I want to Remove all white spaces, new lines
and tabs
Это кажется простым делом, но я кое-что упустил. Должен ли я что-то импортировать?
python
string
python-2.7
strip
bachurim09
источник
источник
Ответы:
Используйте
str.split([sep[, maxsplit]])
безsep
илиsep=None
:Из документов :
Демо:
>>> myString.split() ['I', 'want', 'to', 'Remove', 'all', 'white', 'spaces,', 'new', 'lines', 'and', 'tabs']
Используйте
str.join
в возвращенном списке, чтобы получить этот вывод:>>> ' '.join(myString.split()) 'I want to Remove all white spaces, new lines and tabs'
источник
Если вы хотите удалить несколько элементов пробелов и заменить их отдельными пробелами, проще всего использовать регулярное выражение, подобное этому:
>>> import re >>> myString="I want to Remove all white \t spaces, new lines \n and tabs \t" >>> re.sub('\s+',' ',myString) 'I want to Remove all white spaces, new lines and tabs '
Затем вы можете удалить конечный пробел,
.strip()
если хотите.источник
Воспользуйтесь библиотекой re
import re myString = "I want to Remove all white \t spaces, new lines \n and tabs \t" myString = re.sub(r"[\n\t\s]*", "", myString) print myString
Выход:
источник
import re mystr = "I want to Remove all white \t spaces, new lines \n and tabs \t" print re.sub(r"\W", "", mystr) Output : IwanttoRemoveallwhitespacesnewlinesandtabs
источник
import re myString = "I want to Remove all white \t spaces, new lines \n and tabs \t" output = re.sub(r"[\n\t\s]*", "", myString)
ВЫХОД:
Добрый день!
источник
Вышеупомянутые решения, предполагающие использование регулярного выражения, не идеальны, потому что это такая небольшая задача, а регулярное выражение требует больше ресурсов, чем оправдывает простота задачи.
Вот что я делаю:
myString = myString.replace(' ', '').replace('\t', '').replace('\n', '')
или если вам нужно было удалить кучу вещей, так что однострочное решение было бы необоснованно длинным:
removal_list = [' ', '\t', '\n'] for s in removal_list: myString = myString.replace(s, '')
источник
Поскольку нет ничего более сложного, я хотел поделиться этим, поскольку это помогло мне.
Это то, что я использовал изначально:
import requests import re url = '/programming/10711116/strip-spaces-tabs-newlines-python' # noqa headers = {'user-agent': 'my-app/0.0.1'} r = requests.get(url, headers=headers) print("{}".format(r.content))
Нежелательный результат:
b'<!DOCTYPE html>\r\n\r\n\r\n <html itemscope itemtype="http://schema.org/QAPage" class="html__responsive">\r\n\r\n <head>\r\n\r\n <title>string - Strip spaces/tabs/newlines - python - Stack Overflow</title>\r\n <link
Вот что я изменил на:
import requests import re url = '/programming/10711116/strip-spaces-tabs-newlines-python' # noqa headers = {'user-agent': 'my-app/0.0.1'} r = requests.get(url, headers=headers) regex = r'\s+' print("CNT: {}".format(re.sub(regex, " ", r.content.decode('utf-8'))))
Желаемый результат:
<!DOCTYPE html> <html itemscope itemtype="http://schema.org/QAPage" class="html__responsive"> <head> <title>string - Strip spaces/tabs/newlines - python - Stack Overflow</title>
Точное регулярное выражение, упомянутое @MattH, помогло мне встроить его в свой код. Благодарность!
Примечание: это
python3
источник
Как насчет однострочника, использующего понимание списка внутри соединения?
>>> foobar = "aaa bbb\t\t\tccc\nddd" >>> print(foobar) aaa bbb ccc ddd >>> print(''.join([c for c in foobar if c not in [' ', '\t', '\n']])) aaabbbcccddd
источник