1.一点,两点都一样
前面已经说了。string可以用““ 也可以使用‘ ’。那它为什么要用两种方式表示呢。其实这样会有不少方便之处:
>>> 'I'm'
SyntaxError: invalid syntax
>>> 'I"m'
'I"m'
>>> "I"m"
SyntaxError: invalid syntax
>>> "I'm"
"I'm"
除非你坚持还用下面的方式:
>>> 'I\'m'
"I'm"
2.转义字符
和c/c++差不多
>>> s = 'a\nb\tc'
>>> s
'a\nb\tc'
>>> print(s)
a
b c
>>>len(s)
5
转移字符参考:
注意,如果转义字符没有意义,python会多加一个\:
>>> x = "C:\py\code" # Keeps \ literally
>>> x
'C:\\py\\code'
>>> len(x)
10
>>> path = r'C:\new\text.dat'
>>> path # Show as Python code
'C:\\new\\text.dat'
>>> print(path) # User-friendly format
C:\new\text.dat
>>> len(path) # String length
15
3.三个点:块string:
用三个点的标识就可以记录多行string了。下面的例子'''.....''' 也可以改成""".....""" (一点两点都一样嘛)
>>> h = '''
Hello,
World
'''
>>> h
'\nHello,\nWorld\n'
>>> print(h)
Hello,
World
那么块string有什么作用呢?
1.表示多行string。
2.多汗注释。:)
我在eclipe里创建一个python文件,文件创建说明就是这么注释的:
'''
Created on 2013-4-27
@author: xxxxxx
'''
4.基本的string操作
*真的很好用呀:
>>> print('------------------------------30----------')
------------------------------30----------
>>> print('-'*30+'30'+'-'*10)
------------------------------30----------
你看看,第一种方法要打出30个’-‘, 然后打出30, 再打出10个‘-’。好烦呀。
下面显然会简洁一点:
来30个‘-’,再贴上字符串‘30’, 最后再贴上10个‘-’
注意:string 和 number 不存在+ - / 的关系:
‘hello' + 9: wrong, 不会自动转换9
延用上面的例子。我要看看30是不是在string里,结果显示的确在的。
>>>"30" in ouput
True
这里又用到了in.注意in的多种用途。
5.下标
这个看起来太简单了。直接上例子足以。
下标操作:
>>> h = 'asdn bsdn csdn ... zsdn'
>>> h[0]
'a'
>>> h[0:2] #冒号表示0到2,[...)。包括0, 不包括2
'as'
>>> h[1:3]
'sd'
>>> h[:-1]
'asdn bsdn csdn ... zsd'
>>> h[2:]
'dn bsdn csdn ... zsdn'
说明:
与MATLAB下标操作类似。这里用:表示’直到‘的意思。
1:3 这是指:1到3
1: 这是指: 1到最后
:5 这是指: 最前面到5
并且这里指的是闭开区间。与c++的STL里面[begin...end)类似。
如果要增大步长间隔,可以这么用:
>>> h[1:10:2] #[1, 10) 步长为2
'snbd '
>>> h[::2] #头到尾,步长为2
'ad sncd . sn'
注意这边与MATLAB不太一样,MATLAB中,步长是写在中间的,如[1:2:10]
当然下标不仅仅是变量的权利:
>>> 'spam'[1:3] #没有变量指向的object也可以使用下标等其它操作符。以后不再说明。
'pa'
当然,既然负数也可以表示下标,我们也就可以倒着玩了:
>>> 'hello'[::-1]
'olleh'
>>> 'hello'[3:1:-1]
'll'
>>> 'helio'[3:1:-1]
'il'
这种方法,也可以用slice函数来表示(与前面实例类似)
>>> 'hello'[slice(None, None, -1)]
'olleh'
>>> 'hello'[slice(3, 1, -1)]
'll'
>>> 'helio'[slice(3,1,-1)]
'il'
6.string转换
转到string:
>>> '42'+1
Traceback (most recent call last):
File "<pyshell#152>", line 1, in <module>
'42'+1
TypeError: cannot concatenate 'str' and 'int' objects
>>> str(42)
'42'
>>> str('42')
'42'
>>> repr('42')
"'42'"
>>>
可以发现,str函数可以转到string。 repr更加傻瓜,直接包一层。
转到其它类型:
int(str)
float(str)
......
字符的转换:
#ascii码数对应数字转换。
>>> ord('s')
115
>>> chr(115)
's'
7.sring修改
string属于’不变序列‘。还记得tuple吗?所以下面的操作时不对的:
>>>s = 'sss'
>>>s[0] = 'a' #错误。无法成功。
所以修改string后要赋值给自己:
>>> S = 'splot'
>>> S = S.replace('pl', 'pamal')
>>> S
'spamalot'
8.string方法
string方法的列表如图:
我觉得例子都不需要贴了吧。
8.格式化string
第一篇大概讲了如何格式化string。下面详细讲讲。
这个不是很常用,会尽快更新。。。