Как обрезать пробелы?

Есть ли функция Python, которая будет обрезать пробелы (пробелы и вкладки) из строки?

Пример: \t example string\texample string

Пробел с обеих сторон:

 s = " \ta string example\t " s = s.strip() 

Пробел справа:

 s = s.rstrip() 

Пробел слева:

 s = s.lstrip() 

Как указывает thedz , вы можете указать аргумент, чтобы разделить произвольные символы на любую из следующих функций:

 s = s.strip(' \t\n\r') 

Это приведет к удалению любого пробела, \t , \n или \r символов с левой стороны, правой стороны или с обеих сторон строки.

Приведенные выше примеры только удаляют строки из левой и правой сторон строк. Если вы хотите также удалить символы из середины строки, попробуйте re.sub :

 import re print re.sub('[\s+]', '', s) 

Это должно распечатывать:

 astringexample 

Метод trim Python называется strip :

 str.strip() #trim str.lstrip() #ltrim str.rstrip() #rtrim 

Для ведущих и конечных пробелов:

 s = ' foo \t ' print s.strip() # prints "foo" 

В противном случае работает регулярное выражение:

 import re pat = re.compile(r'\s+') s = ' \t foo \t bar \t ' print pat.sub('', s) # prints "foobar" 

Вы также можете использовать очень простую и базовую функцию: str.replace () , работает с пробелами и вкладками:

 >>> whitespaces = " abcd ef gh ijkl " >>> tabs = " abcde fgh ijkl" >>> print whitespaces.replace(" ", "") abcdefghijkl >>> print tabs.replace(" ", "") abcdefghijkl 

Простой и легкий.

 #how to trim a multi line string or a file s=""" line one \tline two\t line three """ #line1 starts with a space, #2 starts and ends with a tab, #3 ends with a space. s1=s.splitlines() print s1 [' line one', '\tline two\t', 'line three '] print [i.strip() for i in s1] ['line one', 'line two', 'line three'] #more details: #we could also have used a forloop from the begining: for line in s.splitlines(): line=line.strip() process(line) #we could also be reading a file line by line.. eg my_file=open(filename), or with open(filename) as myfile: for line in my_file: line=line.strip() process(line) #moot point: note splitlines() removed the newline characters, we can keep them by passing True: #although split() will then remove them anyway.. s2=s.splitlines(True) print s2 [' line one\n', '\tline two\t\n', 'line three '] 

Никто еще не опубликовал эти решения regex.

Совпадение:

 >>> import re >>> p=re.compile('\\s*(.*\\S)?\\s*') >>> m=p.match(' \t blah ') >>> m.group(1) 'blah' >>> m=p.match(' \tbl ah \t ') >>> m.group(1) 'bl ah' >>> m=p.match(' \t ') >>> print m.group(1) None 

Поиск (вы должны обрабатывать случай ввода «только пробелы» по-разному):

 >>> p1=re.compile('\\S.*\\S') >>> m=p1.search(' \tblah \t ') >>> m.group() 'blah' >>> m=p1.search(' \tbl ah \t ') >>> m.group() 'bl ah' >>> m=p1.search(' \t ') >>> m.group() Traceback (most recent call last): File "", line 1, in  AttributeError: 'NoneType' object has no attribute 'group' 

Если вы используете re.sub , вы можете удалить внутренние пробелы, что может быть нежелательным.

Пробелы include пробел, вкладки и CRLF . Таким образом, мы можем использовать элегантную и однострочную строчную функцию.

' hello apple'.translate(None, ' \n\t\r')

ИЛИ, если вы хотите быть

 import string ' hello apple'.translate(None, string.whitespace) 
  something = "\t please_ \t remove_ all_ \n\n\n\nwhitespaces\n\t " something = "".join(something.split()) 

output: please_remove_all_whitespaces

попробуйте перевести

 >>> import string >>> print '\t\r\n hello \r\n world \t\r\n' hello world >>> tr = string.maketrans(string.whitespace, ' '*len(string.whitespace)) >>> '\t\r\n hello \r\n world \t\r\n'.translate(tr) ' hello world ' >>> '\t\r\n hello \r\n world \t\r\n'.translate(tr).replace(' ', '') 'helloworld' 

(re.sub (‘+’, ”, (my_str.replace (‘\ n’, ”)))). strip ()

Это позволит удалить все нежелательные пробелы и символы новой строки. Надеюсь, что эта помощь

 import re my_str = ' ab \nc ' formatted_str = (re.sub(' +', ' ',(my_str.replace('\n',' ')))).strip() 

Это приведет к:

‘ab \ nc’ будет изменен на ‘ab c’

Как правило, я использую следующий метод:

 >>> myStr = "Hi\n Stack Over \r flow!" >>> charList = [u"\u005Cn",u"\u005Cr",u"\u005Ct"] >>> import re >>> for i in charList: myStr = re.sub(i, r"", myStr) >>> myStr 'Hi Stack Over flow' 

Примечание. Это делается только для удаления «\ n», «\ r» и «\ t». Он не удаляет лишние пробелы.

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

 $p = "ATGCGAC ACGATCGACC"; $p =~ s/\s//g; print $p; 

Это приведет к удалению всех пробелов и новых строк из начала и конца строки:

 >>> s = " \n\t \n some \n text \n " >>> re.sub("^\s+|\s+$", "", s) >>> "some \n text" 
  • Сравнение строк с ==, которые объявлены окончательными в Java
  • Неизменяемость строк в Java
  • Как работает расширение параметра Bash?
  • Как превратить String в InputStreamReader в java?
  • Алгоритм поиска нескольких совпадений строк
  • Получить n-й символ строки в языке программирования Swift
  • Не являются ли строки Python неизменяемыми? Тогда почему работает + "" + b?
  • Команда не обнаружила ошибку в присвоении переменной Bash
  • Как написать символ и в файле android strings.xml
  • Преобразование строки в байтовый массив в C #
  • Выделить выбранную строку ListView
  • Давайте будем гением компьютера.