字符串的其它注意事项--cookbook读书笔记

来源:互联网 发布:淘宝赚差价采集软件 编辑:程序博客网 时间:2024/05/17 06:19

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 &quot;&lt;tag&gt;text&lt;/tag&gt;&quot;.>>> # Disable escaping of quotes>>> print(html.escape(s, quote=False))Elements are written as "&lt;tag&gt;text&lt;/tag&gt;".
有时候,如果你接收到了一些含有编码值的原始文本,需要手动去做替换,通常你只需要使用HTML 或者XML 解析器的一些相关工具函数/方法即可。

>>> s = 'Spicy &quot;Jalape&#241;o&quot.'>>> from html.parser import HTMLParser>>> p = HTMLParser()>>> p.unescape(s)'Spicy "Jalapeño".'>>>>>> t = 'The prompt is &gt;&gt;&gt;'>>> from xml.sax.saxutils import unescape>>> unescape(t)'The prompt is >>>'



原创粉丝点击