Python学习之路13——字符串2

1只适用与字符串的操作符

1.1格式化操作符(%)

Python风格的字符串格式操作符。只适用与字符串类型,非常类似于C语言中的printf()函数的字符串格式化,都是用%,并且支持所有的printf()的格式化操作。
字符串格式化符合如下:

      %c                     转换成字符(ASCII码值,或者长度为一的字符串)

      %r                     优先用repr()函数进行字符串转换

      %s                     优先用str()函数进行字符串转换

      %d、%i             转换成有符号十进制

      %o                    转换成无符号八进制

      %x、%X            转换成无符号十六进制(Xx代表转换后的十六进制字符的大小写)

      %e、%E            转成科学计数法

      %f  %F              转成浮点型(小数部分自然截断)

      %g  %G             %e和%f/%E和%F的简写

      %%                   输出%

格式化操作符辅助指令

技术分享

Python支持两种格式的输入参数。第一种是元组,这是一种C printf()风格的转换参数集;Python支持的第二种形式是字典形式。这种形式里面,键是作为格式字符串出现,相对应的值作为参数在进行转化是提供给格式字符串。
下面是一些例子:
<span style="font-size:14px;">>>> '%x' % 108
'6c'
>>> '%X' % 108
'6C'
>>> '%#X' % 108
'0X6C'
>>> 
>>> '%.2f' % 1234.456789
'1234.46'
>>> '%E' % 1234.456789
'1.234457E+03'
>>> '%g' % 1234.456789
'1234.46'
>>> 
>>> '%+d' % 4
'+4'
>>> '%+d' % -4
'-4'
>>> 'host : %s\tPort: %d' % ('mars', 80)
'host : mars\tPort: 80'
>>> 'ss\t'
'ss\t'
>>> # force on
... 
>>> 'There are %(howmany)d %(lang)s Quotation Symbols' % {'lang':'Python', 'howmany':3}
'There are 3 Python Quotation Symbols'
>>> 
</span>

1.2字符串模板:更简单的替代品
在字典形式的格式化中,程序员难免会出现遗漏转换类型符号的错误。比如,用了%(lang)而不是%(lang)s。为了保证字符串被正确的转换,程序员必须明确的记住转换类型参数。
新式的字符串模板的优势是不用去记住所有的相关细节,而是像shell语言使用$。
Template对象有两个方法,substitute()和safe_substitute()。前者在key缺少的情况下他会报一个KeyError的异常出来,而后者在缺少Key时,直接原封不动的把字符串显示出来。
>>> from string import Template       #导入template对象
>>> s = Template('There are ${howmany} ${lang} Quotation Symbols')
>>> 
>>> print s.substitute(lang='Python', howmany=3)
There are 3 Python Quotation Symbols
>>> print s.substitute(lang='Python')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/string.py", line 172, in substitute
    return self.pattern.sub(convert, self.template)
  File "/usr/lib64/python2.7/string.py", line 162, in convert
    val = mapping[named]
KeyError: 'howmany'
>>> print s.safe_substitute(lang='Python', howmany=3)
There are 3 Python Quotation Symbols
>>> print s.safe_substitute(lang='Python')
There are ${howmany} Python Quotation Symbols
>>> 

1.3原始字符串操作符(r/R)
原始操作符的目的,是为了对付那些在字符串中出现的特殊字符。在原始字符串里,所有的字符都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。
>>> '\n'
'\n'
>>> print '\n'


>>> r'\n'
'\\n'
>>> print r'\n'
\n
>>> 

1.4 Unicode 字符串操作符(u/U)
它是用来把标注字符串或者是包含Unicode字符的字符串转换成完全的Unicode字符串对象。

2内建函数

cmp()

内建的cmp()函数根据字符串的ASCII码值进行比较
>>> str1 = 'abc'
>>> str2 = 'lmn'
>>> str3 = 'xyz'
>>> cmp(str1, str2)
-1
>>> cmp(str3, str1)
1
>>> cmp(str2, 'lmn')
0
>>> 

len()

len()返回字符串的字符数。
>>> len('test')
4
>>> 

max() and min()

max() 和 min() 返回字符串中最大和最小的值
>>> max('ad23xy')
'y'
>>> min('zyad')
'a'
>>> 

enumerate()

>>> s = 'foobar'
>>> for i,t in enumerate(s):
...     print i, t
... 
0 f
1 o
2 o
3 b
4 a
5 r
>>> 

zip()

>>> s,t = 'foo', 'bar'
>>> zip(s,t)
[('f', 'b'), ('o', 'a'), ('o', 'r')]
>>> 

raw_input()

使用给定字符串提示用户输入并将这个输入返回,

>>> username = raw_input('enter your name: ')
enter your name: coder
>>> username
'coder'
>>> len(username)
5
>>> 
Python里面没有C风格的结束字符NUL,你输入多少个字符,就返回多少个字符。





郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。