- 论坛徽章:
- 0
|
Normal
0
7.8 磅
0
2
false
false
false
MicrosoftInternetExplorer4
st1\:*{behavior:url(#ieooui) }
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
§3 字符串
2009-8-16
磁针石:xurongzhong#gmail.com
博客:
oychw.cublog.cn
§3.1 基本的字符串操作
支持的序列的基本操作:(indexing,
slicing, multiplication, membership, length,
minimum, and maximum)
§3.2 字符串格式化的短格式
格式化:
>>> format = "Hello, %s. %s
enough for ya?"
>>> values = ('world', 'Hot')
>>> print format % values
Hello, world. Hot enough for ya?
注意,除了数组和字典外,其他的序列都解释为单个值。
真正的百分号要用%%表示。
其他类型:
>>>
format = "Pi with three decimals: %.3f"
>>> from math import pi
>>> print format % pi
Pi with three decimals: 3.142
另外一种类似shell的格式化方法:TEMPLATE STRINGS
>>> from string import Template
>>> s = Template('$x, glorious
$x!')
>>> s.substitute(x='slurm')
>>> s = Template("It's
${x}tastic!")
>>> s.substitute(x='slurm')
"It's slurmtastic!"
插入美元符号:
>>>
s = Template("Make $$ selling $x!")
>>> s.substitute(x='slurm')
'Make $ selling slurm!'
配合字典的使用:
>>>
s = Template('A $thing must never $action.')
>>> d = {}
>>> d['thing'] = 'gentleman'
>>> d['action'] = 'show his socks'
>>> s.substitute(d)
'A gentleman must never show his socks.'
§3.3 字符串格式化的长格式
长版本的字符串格式化:
>>> '%s plus %s equals %s' % (1,
1, 2)
'1 plus 1 equals 2'
>>>
'Price of eggs: $%d' % 42
'Price of eggs: $42'
>>> 'Hexadecimal price of eggs:
%x' % 42
'Hexadecimal price of eggs: 2a'
>>> from math import pi
>>> 'Pi: %f...' % pi
'Pi: 3.141593...'
>>> 'Very inexact estimate of pi:
%i' % pi
'Very inexact estimate of pi: 3'
>>> 'Using str: %s' % 42L
'Using str: 42'
>>> 'Using repr: %r' % 42L
'Using repr: 42L'
具体介绍参见教材84页
>>> '%10.2f' % pi # Field width 10, precision 2
' 3.14'
>>> '%.2f' % pi # Precision 2
'3.14'
>>> '%.5s' % 'Guido van Rossum'
'Guido'
>>> '%.*s' % (5, 'Guido van
Rossum')
'Guido'
>>> '%010.2f' % pi
'0000003.14'
注意010在这里不是代表8进制。
>>> '%-10.2f' % pi
'3.14
在正数前面添加空格
>>> print ('% 5d' % 10) + '\n' +
('% 5d' % -10)F
10
-10
正数前添加“+”号。
>>> print ('%+5d' % 10) + '\n' +
('%+5d' % -10)
+10
-10
字符串格式化实例:
# Print a formatted price list with a given
width
width = input('Please enter width: ')
price_width = 10
item_width = width - price_width
header_format = '%-*s%*s'
format = '%-*s%*.2f'
print '=' * width
print header_format % (item_width, 'Item',
price_width, 'Price')
print '-' * width
print format % (item_width, 'Apples',
price_width, 0.4)
print format % (item_width, 'Pears',
price_width, 0.5)
print format % (item_width, 'Cantaloupes',
price_width, 1.92)
print format % (item_width, 'Dried Apricots
(16 oz.)', price_width, 8)
print format % (item_width, 'Prunes (4 lbs.)', price_width, 12)
print '=' * width
运行结果:
Please enter width: 35
===================================
Item Price
———————————————————————————————————
Apples 0.40
Pears 0.50
Cantaloupes 1.92
Dried Apricots (16 oz.) 8.00
Prunes (4 lbs.) 12.00
§3.4 字符串方法
字符串常量:
? string.digits: A string containing the
digits 0–9
? string.letters: A string containing all
letters (uppercase and lowercase)
? string.lowercase: A string containing all
lowercase letters
? string.printable: A string containing all
printable characters
? string.punctuation: A string containing
all punctuation characters
? string.uppercase: A string containing all
uppercase letters
这个东东跟所在区域有关的,比如:string.ascii_letters
查找:
>>> 'With a moo-moo here, and a
moo-moo there'.find('moo')
7
如果没有查找到,返回-1.
>>> subject = '$$$ Get rich now!!!
$$$'
>>> subject.find('$$$')
0
>>> subject.find('$$$', 1) # Only
supplying the start
20
1表示查找的起点。
连接:
>>>
seq = ['1', '2', '3', '4', '5']
>>> sep.join(seq) # Joining a list
of strings
'1+2+3+4+5'
>>> dirs = '', 'usr', 'bin', 'env'
>>> '/'.join(dirs)
'/usr/bin/env'
>>> print 'C:' + '\\'.join(dirs)
C:\usr\bin\env
小写:
lower:
>>> 'Trondheim Hammer
Dance'.lower()
'trondheim
hammer dance'
相关的有:See also:
translate.
In Appendix B: islower, capitalize,
swapcase, title, istitle, upper, isupper.
>>> "that's all
folks".title()
"That'S All, Folks"
>>> import string
>>> string.capwords("that's
all, folks")
"That's All, Folks"
替换:
>>> 'This is a test'.replace('is',
'eez')
'Theez eez a test
切割:split
>>> '1+2+3+4+5'.split('+')
['1', '2', '3', '4', '5']
去掉多余的空格:strip
>>> '1+2+3+4+5'.split('+')
['1', '2', '3', '4', '5']
>>> '*** SPAM * for * everyone!!!
***'.strip(' *!')
'SPAM * for * everyone'
替换单个字符:translate:暂不涉及
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21908/showart_2029202.html |
|