python学习 字符串
来源:互联网 发布:管家婆软件 编辑:程序博客网 时间:2024/05/21 19:58
字符串
相比数值,Python 也提供了可以通过几种不同方式表示的字符串。它们可以用单引号 ('...'
) 或双引号 ("..."
) 标识[2]。\
可以用来转义引号:
>>> 'spam eggs' # single quotes'spam eggs'>>> 'doesn\'t' # use \' to escape the single quote..."doesn't">>> "doesn't" # ...or use double quotes instead"doesn't">>> '"Yes," he said.''"Yes," he said.'>>> "\"Yes,\" he said."'"Yes," he said.'>>> '"Isn\'t," she said.''"Isn\'t," she said.'
在交互式解释器中,输出的字符串会用引号引起来,特殊字符会用反斜杠 (\) 转义。虽然可能和输入看上去不太一样,但是两个字符串是相等的。如果字符串中只有单引号而没有双引号,就用双引号引用,否则用单引号引用。再强调一下,print 语句可以生成可读性更好的输出:
>>> '"Isn\'t," she said.''"Isn\'t," she said.'>>> print '"Isn\'t," she said.'"Isn't," she said.>>> s = 'First line.\nSecond line.' # \n means newline>>> s # without print, \n is included in the output'First line.\nSecond line.'>>> print s # with print, \n produces a new lineFirst line.Second line.
如果你前面带有 \
的字符被当作特殊字符,你可以使用原始字符串,方法是在第一个引号前面加上一个 r
:
>>> print 'C:\some\name' # here \n means newline!C:\someame>>> print r'C:\some\name' # note the r before the quoteC:\some\name
字符串文本能够分成多行。一种方法是使用三引号:"""..."""
或者'''...'''
。行尾换行符会被自动包含到字符串中,但是可以在行尾加上\
来避免这个行为。下面的示例:可以使用反斜杠为行结尾的连续字符串,它表示下一行在逻辑上是本行的后续内容:
print """\Usage: thingy [OPTIONS] -h Display this usage message -H hostname Hostname to connect to"""
将生成以下输出(注意,没有开始的第一行):
Usage: thingy [OPTIONS] -h Display this usage message -H hostname Hostname to connect to
字符串可以由 +
操作符连接(粘到一起),可以由*
表示重复:
>>> # 3 times 'un', followed by 'ium'>>> 3 * 'un' + 'ium''unununium'
相邻的两个字符串文本自动连接在一起。:
>>> 'Py' 'thon''Python'
它只用于两个字符串文本,不能用于字符串表达式:
>>> prefix = 'Py'>>> prefix 'thon' # can't concatenate a variable and a string literal ...SyntaxError: invalid syntax>>> ('un' * 3) 'ium' ...SyntaxError: invalid syntax
如果你想连接多个变量或者连接一个变量和一个字符串文本,使用 +
:
>>> prefix + 'thon''Python'
这个功能在你想切分很长的字符串的时候特别有用:
>>> text = ('Put several strings within parentheses ' 'to have them joined together.')>>> text'Put several strings within parentheses to have them joined together.'
字符串也可以被截取(检索)。类似于 C ,字符串的第一个字符索引为 0 。Python没有单独的字符类型;一个字符就是一个简单的长度为1的字符串。:
>>> word = 'Python'>>> word[0] # character in position 0'P'>>> word[5] # character in position 5'n'
索引也可以是负数,这将导致从右边开始计算。例如:
>>> word[-1] # last character'n'>>> word[-2] # second-last character'o'>>> word[-6]'P'
请注意 -0 实际上就是 0,所以它不会导致从右边开始计算。
除了索引,还支持 切片。索引用于获得单个字符,切片 让你获得一个子字符串:
>>> word[0:2] # characters from position 0 (included) to 2 (excluded)'Py'>>> word[2:5] # characters from position 2 (included) to 5 (excluded)'tho'
注意,包含起始的字符,不包含末尾的字符。这使得s[:i] +s[i:]
永远等于s
:
>>> word[:2] + word[2:]'Python'>>> word[:4] + word[4:]'Python'
切片的索引有非常有用的默认值;省略的第一个索引默认为零,省略的第二个索引默认为切片的字符串的大小。:
>>> word[:2] # character from the beginning to position 2 (excluded)'Py'>>> word[4:] # characters from position 4 (included) to the end'on'>>> word[-2:] # characters from the second-last (included) to the end'on'
有个办法可以很容易地记住切片的工作方式:切片时的索引是在两个字符之间 。左边第一个字符的索引为 0,而长度为n 的字符串其最后一个字符的右界索引为 n。例如:
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6-6 -5 -4 -3 -2 -1
文本中的第一行数字给出字符串中的索引点 0...6。第二行给出相应的负索引。切片是从i 到j 两个数值标示的边界之间的所有字符。
对于非负索引,如果上下都在边界内,切片长度就是两个索引之差。例如,word[1:3]
是 2 。
试图使用太大的索引会导致错误:
>>> word[42] # the word only has 6 charactersTraceback (most recent call last): File "<stdin>", line 1, in <module>IndexError: string index out of range
Python 能够优雅地处理那些没有意义的切片索引:一个过大的索引值(即下标值大于字符串实际长度)将被字符串实际长度所代替,当上边界比下边界大时(即切片左值大于右值)就返回空字符串:
>>> word[4:42]'on'>>> word[42:]''
Python字符串不可以被更改 — 它们是不可变 的。因此,赋值给字符串索引的位置会导致错误:
>>> word[0] = 'J' ...TypeError: 'str' object does not support item assignment>>> word[2:] = 'py' ...TypeError: 'str' object does not support item assignment
如果你需要一个不同的字符串,你应该创建一个新的:
>>> 'J' + word[1:]'Jython'>>> word[:2] + 'py''Pypy'
内置函数 len() 返回字符串长度:
>>> s = 'supercalifragilisticexpialidocious'>>> len(s)34
- Python学习---字符串操作
- python学习总结-- 字符串
- python字符串学习笔记
- python字符串处理学习
- Python学习笔记---字符串
- python基础学习 字符串
- Python 学习笔记-字符串
- Python学习之字符串
- python学习:字符串操作
- Python学习-字符串操作
- python字符串学习
- Python学习之字符串
- Python 学习 字符串
- python学习 字符串
- python 学习-字符串
- Python学习之字符串
- Python字符串学习4
- python学习-字符串操作
- AccessibilityService简介
- android 传参 StringRequest 用法_2 VolleySingleton文件
- linux教学视频
- 浅析计算机网络(1) -- 主机如何上网
- Foundation-NSMutableString
- python学习 字符串
- leetcode -- Minimum Path Sum -- 简单DP
- HTML学习中遇到的问题记录
- VDSO/linux-gate.so/sysenter
- 黑马程序员_java数组的应用
- tuxedo学习视频
- 判断UIImage是否相同
- 走向全栈!
- FreeMarker整合Spring 3