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>
在字典形式的格式化中,程序员难免会出现遗漏转换类型符号的错误。比如,用了%(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
>>>
原始操作符的目的,是为了对付那些在字符串中出现的特殊字符。在原始字符串里,所有的字符都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。
>>> '\n'
'\n'
>>> print '\n'
>>> r'\n'
'\\n'
>>> print r'\n'
\n
>>>
它是用来把标注字符串或者是包含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,你输入多少个字符,就返回多少个字符。