13 ответов:
пробелами с обеих сторон:
s = " \t a 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
для начальных и конечных пробелов:
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"
вы также можете использовать очень простую и основную функцию:.заменить(), работает с пробелами и вкладки:
>>> 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.. e.g. 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 ']
никто еще не опубликовал эти решения регулярных выражений.
согласование:
>>> 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 "<stdin>", line 1, in <module> AttributeError: 'NoneType' object has no attribute 'group'Если вы используете
re.sub, вы можете удалить внутренние пробелы, которые могут быть нежелательными.
пробел включает в себя пробелов, табуляции и переводы строк. Так элегантный и шутка строковая функция, которую мы можем использовать, это перевести.
' 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())выход: please_remove_all_whitespaces
(re.sub ( ' + ' ,'', (my_str.заменить('\п',' ')))).прокладки()
Это позволит удалить все ненужные пробелы и символы новой строки. Надеюсь, что это поможет
import re my_str = ' a b \n c ' formatted_str = (re.sub(' +', ' ',(my_str.replace('\n',' ')))).strip()в результате :
'a b \n c'будет заменен на 'A b c'
попробуйте перевести
>>> 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'
как правило, я использую следующий метод:
>>> 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;выход: ATGCGACACGATCGACC
Это позволит удалить все пробелы и переводы строк из начала и конца строки:
>>> s = " \n\t \n some \n text \n " >>> re.sub("^\s+|\s+$", "", s) >>> "some \n text"
Comments