1. 删除字符串中不需要的字符
strip() 方法能用于删除开始或结尾的字符。lstrip() 和rstrip() 分别从左和从右执行删除操作。默认情况下,这些方法会去除空白字符,但是你也可以指定其他字符。如果你想处理中间的空格,那么你需要求助其他技术。比如使用replace() 方法或者是用正则表达式替换。
2. 审查清理文本字符串
使用str.replace() 或者re.sub() 的简单替换操作能删除或者改变指定的字符。你可能想消除整个区间上的字符或者去除变音符。为了这样做,你可以使用经常会被忽视的tr.translate()方法。对于简单的替换操作, str.replace() 方法通常是最快的,另一方面,如果你需要执行任何复杂字符对字符的重新映射或者删除操作的话,tanslate() 方法会非常的快。
>>> s = 'pýtĥöñ\fis\tawesome\r\n'
>>> s
'pýtĥöñ\x0cis\tawesome\r\n'
>>> remap = {
... ord('\t') : ' ',
... ord('\f') : ' ',
... ord('\r') : None # Deleted
... }
>>> a = s.translate(remap)
>>> a
'pýtĥöñ is awesome\n'
3. 字符串对齐
对于基本的字符串对齐操作,可以使用字符串的ljust() , rjust() 和center()方法。函数format() 同样可以用来很容易的对齐字符串。你要做的就是使用<,> 或者ˆ 字符后面紧跟一个指定的宽度。
>>> text = 'Hello World'
>>> text.ljust(20)
'Hello World '
>>> text.rjust(20,'=')
'=========Hello World'
>>> format(text, '^20')
' Hello World '
4. 合并拼接字符串
如果你想要合并的字符串是在一个序列或者iterable 中,那么最快的方式就是使用join() 方法。我们使用加号(+) 操作符去连接大量的字符串的时候是非常低效率的,因为加号连接会引起内存复制以及垃圾回收操作。>>> parts = ['Is', 'Chicago', 'Not', 'Chicago?']
>>> ' '.join(parts)
'Is Chicago Not Chicago?'
>>> ','.join(parts)
'Is,Chicago,Not,Chicago?'
一个相对比较聪明的技巧是利用生成器表达式,转换数据为字符串的同时合并字符串>>> data = ['ACME', 50, 91.1]
>>> ','.join(str(d) for d in data)
'ACME,50,91.1'
5. 字符串中插入变量
format 和format map() 的一个缺陷就是它们并不能很好的处理变量缺失的情况。vars() 有一个特性就是它也适用于对象实例。
>>> s = '{name} has {n} messages.'
>>> s.format(name='Guido', n=37)
'Guido has 37 messages.'
>>> name = 'Guido'
>>> n = 37
>>> s.format_map(vars())
'Guido has 37 messages.'
>>> class Info:
... def __init__(self, name, n):
... self.name = name
... self.n = n
...
>>> a = Info('Guido',37)
>>> s.format_map(vars(a))
'Guido has 37 messages.'
6. 在字符串中处理html 和xml
如果你想替换文本字符串中的‘<’ 或者‘>’ ,使用html.escape() 函数可以很容易的完成。
>>> s = 'Elements are written as "<tag>text</tag>".'
>>> import html
>>> print(s)
Elements are written as "<tag>text</tag>".
>>> print(html.escape(s))
Elements are written as "<tag>text</tag>".
>>> # Disable escaping of quotes
>>> print(html.escape(s, quote=False))
Elements are written as "<tag>text</tag>".
有时候,如果你接收到了一些含有编码值的原始文本,需要手动去做替换,通常你只需要使用HTML 或者XML 解析器的一些相关工具函数/方法即可。
>>> s = 'Spicy "Jalapeño".'
>>> from html.parser import HTMLParser
>>> p = HTMLParser()
>>> p.unescape(s)
'Spicy "Jalapeño".'
>>>
>>> t = 'The prompt is >>>'
>>> from xml.sax.saxutils import unescape
>>> unescape(t)
'The prompt is >>>'