字符串可以用单引号或双引号包围,建议用单引号。
如果字符串中含单引号或双引号,可以用\
转移(escape)。例如\\
, \'
, \"
, \n
等。
>>> a='\\'
>>> a
'\\'
>>> len(a)
1
也可以在字符串前加r
,表示是raw string,会忽略转义:
>>> print('\n is new line')
is new line
>>> print(r'\n is new line')
\n is new line
如果字符串跨多行,可使用三个单引号'''
包围,这样其中所有的换行,缩进等都会保留:
>>> print('''Dear Alice,
...
... Eve's cat has been arrested for catnapping, cat burglary, and extortion.
...
... Sincerely,
... Bob''')
Dear Alice,
Eve's cat has been arrested for catnapping, cat burglary, and extortion.
Sincerely,
Bob
三个双引号"""
用于多行注释。#
用于单行注释。
字符串可看成是字符的list,因此也可以索引(从0开始),切片,与in
和not in
操作符结合。
下面两种方式都可以实现字符串的拼接:
# f string,版本3.6以后支持
>>> print(f'Panda {name} is {age} years old')
Panda meimei is 4 years old
# string interpolation,老方式
>>> print(f'Panda %s is %s years old' %(name, age))
Panda meimei is 4 years old
upper()
和lower()
可以将字符串转换为大小写,但不会改变原始字符串。
isupper()
和islower()
可判断字符串是否大小写。
其它以is
开头的方法包括isapha()
, isalnum()
, isdecimal()
, isspace()
和istitle()
。
startswith()
和endswith()
方法不说了。
join()
和split()
方法可以用指定的分隔符组合或分割字符串,如split('\n')
可用于分割多行:
>>> ', '.join(['dog', 'cat', 'pig'])
'dog, cat, pig'
>>> 'dog, cat, pig'.split(', ')
['dog', 'cat', 'pig']
partition()
方法将字符串分割为3部分,之前,分隔符和之后:
>>> 'Hello, world!'.partition('world')
('Hello, ', 'world', '!')
如果没有找到,则返回整个字符串,空串,空串
rjust(), ljust(), and center() 通过添加空格实现左右和居中对齐,在做表格时特别有用,如小票。
>>> 'left'.rjust(10)
' left'
>>> 'right'.ljust(10)
'right '
>>> 'center'.center(10)
' center '
>>> 'center'.center(10, '*')
'**center**'
strip(), rstrip(), and lstrip()可去除左右或两端的空格。
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 1)
'b'
建议看视频:Ned Batchelder’s 2012 PyCon talk, “Pragmatic Unicode, or, How Do I Stop the Pain?” at https://youtu.be/sgHbC6udIqc
这个模块需要额外安装:
$ pip3 install --user pyperclip
示例:
>>> import pyperclip
>>> pyperclip.copy('Hello World!')
>>> pyperclip.paste()
'Hello World!'
以上三个示例程序,有几点收获。
sys模块。sys.argv表示传入的参数,argv[0]是第一个参数,没有类似于C语言中的argc,用len(argv)代替。
其它还有sys.path, sys.modules等,详见help(‘sys’)
第二个就是可以she-bang的方式直接运行python文件。
例如文件test.py
:
#!/usr/bin/python3
python code here
赋予此文件可执行权限:
chmod a+x test.py
然后就可以用./test.py
运行,而不必用python3 test.py
运行了。
与这几个例子类似的程序可参见这里: https://nostarch.com/automatestuff2/
遗留问题,"""
除了做注释,好像还可以做字符串? - 查阅了文档,在Python中,单引号和双引号可认为是对等的,因此3个单引号和3个双引号是一个含义,称为triple quoted string,可以作为注释,或者作为字符串赋值给变量,特别是在跨多行,并且其中含换行等特殊字符时:
>>> a="""
... aa
... lk
... """
>>> a
'\naa\n \tlk\n'
还有剪贴板程序,可以读取剪贴板的内容,但是粘贴到剪贴板的内容,从外部读取不到。
第一个练习的代码:
def print_table(t):
num_items = len(t[0])
max_lens = [0] * len(t)
for i in range(len(max_lens)):
for j in range(num_items):
clen = len(t[i][j])
if clen > max_lens[i]:
max_lens[i] = clen
for i in range(num_items):
str = ''
for j in range(len(max_lens)):
str += t[j][i].rjust(max_lens[j])
str += ' '
print(str.rstrip())
table_data = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
print_table(table_data)
输出为:
apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose
第二个练习参见:https://github.com/asweigart/zombiedice/