Как обрезать пробелы?
Есть ли функция Python, которая будет обрезать пробелы (пробелы и вкладки) из строки?
Пример: \t example string\t
→ example string
- Что рекурсивно распространяется на все файлы в текущем каталоге?
- Получить версию java из командного файла
- Как получить часть файла после строки, которая соответствует выражению grep? (первое совпадение)
- Когда использовать StringBuilder в Java
- Игнорирование акцентированных букв в сравнении строк
- Как выполнить команду для каждой строки файла?
- Лучший способ заменить многие строки - обфускация в C #
- Сравнить номера версий без использования функции split
- Поиск строки Java, игнорирующий акценты
- Форматировать строки в методе Console.WriteLine
- В чем преимущество непрерывности String?
- Выключение строки C ++
- Как разместить треугольники стрелки на линиях SVG?
Пробел с обеих сторон:
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"