python 为我们提供的最方便的处理文字的工具就是字符串——一个不可改变是序列。这里呢,也不是什么重要的教程,也没有其他任何的重要意义,也就是记录一下最近学习了什么&复习了什么,脉络一般的东西,给自己做一个记录,也可以在有空的时候给自己巩固一下印象。这也印证了本文归属的类别:[object Object]。

实际上,在这个寒假,自己学了不少有关python语言的新知识,譬如一些像map、reduce一样的内建函数,再或者是python1.5开始新引入的装饰器。可是没有一个好的记录,所以又忘记了许多,说不定整个内容还要复习一遍。这里呢,就以代码为主,记录主要内容,方便以后查阅和概览。

##表示

python 的字符串,最基本的表现形式应该是用单引号或者双引号括起来。这些应该早就知道了,可能略有生疏的是三个连续的引号:

d = '''
I am a 
string 
with many lines.

    Author: Marchon
'''

所以说,在普通的时候采用三个引号,可以理解为产生了一个不需要执行的字符串吧。

字符串之前有一个r,代表不转义。
举个例子:

>>> a = r'\n'
>>> print a
\n
>>> print repr(a)
'\\n'

但是这样也并不是万能的。
譬如:

>>>a = r'\'
SyntaxError: EOL while scanning string literal

对于这个例子来说,本来认为repr(a)应该是’\\‘这个样子,但是实际上,还会报语法错误,在真正运行的时候,后一个单引号被忽略了。r是忽略其他的转义了,但是单引号,作为字符串的末尾,如果想要出现在字符串中,还是需要转义的。

如果采用r标识,一行写不完怎么办。依然是采用斜杠,只不过写法略有区别。

>>> c = r'\n First Line' \
...  r' \r Second Line.'
>>> print c
\n First Line \r Second Line.

采用u在字符串之前,就可以表示unicode。比如我们知道\u0020是代表空格,那么a = u’\u0020’,那么a就是一个unicode格式的空格。和普通的空格还是不一样的。

>>> a = u'\u0020'
>>> b = ' '
>>> a
u' '
>>> b
' '

如果这个时候,c = ‘\u0020’,那么会变成空格吗?事实上如果这么写,那么c只会是一个普通的字符串而已,在普通字符串里,根本就不会有\u的含义,也就不会产生任何转义。

切片

对于切片来说,很多内容都已经很熟悉了,只不过对于三个参数的,还是有些忘记。记得第三个参数的意思是步长就可以了。

>>> a = '1234567890'
>>> a[1:3]
'23'
>>> a[1:7:2]
'246'
>>> a[1:7:-1]
''
>>> a[:7:-1]
'09'
>>> a[8:2:-1]
'987654'

写一个包含很多内容的代码,如果过一阵我自己还能看懂,说明最近的学习还是没白费。

>>> print reduce(lambda x,y: x+'\n'+y , map(' '.join, map(list,'www.maziang.com'.upper().split('.'))))
W W W
M A Z I A N G
C O M

##字符串对齐
就三个函数:
ljust,rjust,center

>>> print 'README'.center(20,'*')
*******README*******
>>> print 'README'.ljust(20,'*')
README**************
>>> print 'README'.rjust(20,'*')
**************README

与此对应的三个函数是:lstrip,rstrp,strip
下面是strip的例子:

>>> print '## #  # Secure Guide #*# '.strip('# *')
Secure Guide