-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpython3_crash6.html
More file actions
267 lines (233 loc) · 22 KB
/
python3_crash6.html
File metadata and controls
267 lines (233 loc) · 22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="utf-8" />
<title>[雪峰磁针石博客]python3快速入门教程2数据结构2字符串</title>
<link rel="stylesheet" href="/theme/css/main.css" />
</head>
<body id="index" class="home">
<header id="banner" class="body">
<h1><a href="/">python自动化测试人工智能 </a></h1>
<nav><ul>
<li><a href="/category/ba-zi.html">八字</a></li>
<li><a href="/category/ce-shi.html">测试</a></li>
<li><a href="/category/ce-shi-kuang-jia.html">测试框架</a></li>
<li><a href="/category/common.html">common</a></li>
<li><a href="/category/da-shu-ju.html">大数据</a></li>
<li><a href="/category/feng-shui.html">风水</a></li>
<li><a href="/category/ji-qi-xue-xi.html">机器学习</a></li>
<li><a href="/category/jie-meng.html">解梦</a></li>
<li><a href="/category/linux.html">linux</a></li>
<li class="active"><a href="/category/python.html">python</a></li>
<li><a href="/category/shu-ji.html">书籍</a></li>
<li><a href="/category/shu-ju-fen-xi.html">数据分析</a></li>
<li><a href="/category/zhong-cao-yao.html">中草药</a></li>
<li><a href="/category/zhong-yi.html">中医</a></li>
</ul></nav>
</header><!-- /#banner -->
<section id="content" class="body">
<article>
<header>
<h1 class="entry-title">
<a href="/python3_crash6.html" rel="bookmark"
title="Permalink to [雪峰磁针石博客]python3快速入门教程2数据结构2字符串">[雪峰磁针石博客]python3快速入门教程2数据结构2字符串</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<abbr class="published" title="2018-09-02T10:35:00+08:00">
Published: 日 02 九月 2018
</abbr>
<address class="vcard author">
By <a class="url fn" href="/author/andrew.html">andrew</a>
</address>
<p>In <a href="/category/python.html">python</a>.</p>
</footer><!-- /.post-info --> <h2 id="_1">快速入门</h2>
<p>字符串可以包含在单引号或双引号中。</p>
<div class="highlight"><pre><span></span><span class="o">>>></span> <span class="s1">'spam eggs'</span> <span class="c1"># single quotes</span>
<span class="s1">'spam eggs'</span>
<span class="o">>>></span> <span class="s1">'doesn</span><span class="se">\'</span><span class="s1">t'</span> <span class="c1"># use \' to escape the single quote...</span>
<span class="s2">"doesn't"</span>
<span class="o">>>></span> <span class="s2">"doesn't"</span> <span class="c1"># ...or use double quotes instead</span>
<span class="s2">"doesn't"</span>
<span class="o">>>></span> <span class="s1">'"Yes," he said.'</span>
<span class="s1">'"Yes," he said.'</span>
<span class="o">>>></span> <span class="s2">"</span><span class="se">\"</span><span class="s2">Yes,</span><span class="se">\"</span><span class="s2"> he said."</span>
<span class="s1">'"Yes," he said.'</span>
<span class="o">>>></span> <span class="s1">'"Isn</span><span class="se">\'</span><span class="s1">t," she said.'</span>
<span class="s1">'"Isn</span><span class="se">\'</span><span class="s1">t," she said.'</span>
</pre></div>
<p>解释器按照字符串被输入的方式显示字符串,通常包含在单引号中,如果内容包含包含单引号,则包含在双引号中。</p>
<p>print会以更可视的格式显示:</p>
<div class="highlight"><pre><span></span><span class="o">>>></span> <span class="s1">'"Isn</span><span class="se">\'</span><span class="s1">t," she said.'</span>
<span class="s1">'"Isn</span><span class="se">\'</span><span class="s1">t," she said.'</span>
<span class="o">>>></span> <span class="k">print</span><span class="p">(</span><span class="s1">'"Isn</span><span class="se">\'</span><span class="s1">t," she said.'</span><span class="p">)</span>
<span class="s2">"Isn't,"</span> <span class="n">she</span> <span class="n">said</span><span class="o">.</span>
<span class="o">>>></span> <span class="n">s</span> <span class="o">=</span> <span class="s1">'First line.</span><span class="se">\n</span><span class="s1">Second line.'</span> <span class="c1"># \n means newline</span>
<span class="o">>>></span> <span class="n">s</span> <span class="c1"># without print(), \n is included in the output</span>
<span class="s1">'First line.</span><span class="se">\n</span><span class="s1">Second line.'</span>
<span class="o">>>></span> <span class="k">print</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="c1"># with print(), \n produces a new line</span>
<span class="n">First</span> <span class="n">line</span><span class="o">.</span>
<span class="n">Second</span> <span class="n">line</span><span class="o">.</span>
</pre></div>
<p>字符串前面添加'r'表示原始字符串,里面的反斜杠不会转义:</p>
<div class="highlight"><pre><span></span><span class="o">>>></span> <span class="sa">r</span><span class="s1">'C:\Program Files\foo\bar</span><span class="se">\'</span>
<span class="n">File</span> <span class="s2">"<stdin>"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1</span>
<span class="sa">r</span><span class="s1">'C:\Program Files\foo\bar</span><span class="se">\'</span>
<span class="o">^</span>
<span class="ne">SyntaxError</span><span class="p">:</span> <span class="n">EOL</span> <span class="k">while</span> <span class="n">scanning</span> <span class="n">string</span> <span class="n">literal</span>
<span class="o">>>></span> <span class="sa">r</span><span class="s1">'C:\Program Files\foo\bar''</span><span class="se">\\</span><span class="s1">'</span>
<span class="s1">'C:</span><span class="se">\\</span><span class="s1">Program Files</span><span class="se">\\</span><span class="s1">foo</span><span class="se">\\</span><span class="s1">bar</span><span class="se">\\</span><span class="s1">'</span>
<span class="o">>>></span>
</pre></div>
<p>原始字符串不能以单个反斜杠结尾。换而言之,原始字符串的最后一个字符不能是反斜杠,除非你对其进行转义(但进行转义时,用于转义的反斜杠也将是字符串的一部分)如果最后一个字符(位于结束引号前面的那个字符)为反斜杠,且未对其进行转义,Python将无法判断字符串是否到此结束。</p>
<p>跨行的字符串多使用三引号,即三个单引号或者三个双引号:</p>
<div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="s2">"""</span><span class="se">\</span>
<span class="s2">Usage: thingy [OPTIONS]</span>
<span class="s2"> -h Display this usage message</span>
<span class="s2"> -H hostname Hostname to connect to</span>
<span class="s2">"""</span><span class="p">)</span>
<span class="n">Usage</span><span class="p">:</span> <span class="n">thingy</span> <span class="p">[</span><span class="n">OPTIONS</span><span class="p">]</span>
<span class="o">-</span><span class="n">h</span> <span class="n">Display</span> <span class="n">this</span> <span class="n">usage</span> <span class="n">message</span>
<span class="o">-</span><span class="n">H</span> <span class="n">hostname</span> <span class="n">Hostname</span> <span class="n">to</span> <span class="n">connect</span> <span class="n">to</span>
</pre></div>
<p>注意第一个三引号后面有反斜杠,就不会输出第一个换行符。末尾的反斜杠表示续行。</p>
<p>字符串可用+操作符连接,用*重复:</p>
<div class="highlight"><pre><span></span><span class="o">>>></span> <span class="mi">3</span> <span class="o">*</span> <span class="s1">'un'</span> <span class="o">+</span> <span class="s1">'ium'</span>
<span class="s1">'unununium'</span>
</pre></div>
<p>相邻字符串文本会自动连接,它只用于字符串文本,不能用于字符串表达式和变量(需要使用加号)等:</p>
<div class="highlight"><pre><span></span><span class="o">>>></span> <span class="s1">'Py'</span> <span class="s1">'thon'</span>
<span class="s1">'Python'</span>
<span class="o">>>></span> <span class="n">prefix</span> <span class="s1">'thon</span>
<span class="n">File</span> <span class="s2">"<stdin>"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1</span>
<span class="n">prefix</span> <span class="s1">'thon</span>
<span class="o">^</span>
<span class="ne">SyntaxError</span><span class="p">:</span> <span class="n">EOL</span> <span class="k">while</span> <span class="n">scanning</span> <span class="n">string</span> <span class="n">literal</span>
<span class="o">>>></span> <span class="p">(</span><span class="s1">'un'</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span> <span class="s1">'ium'</span>
<span class="n">File</span> <span class="s2">"<stdin>"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1</span>
<span class="p">(</span><span class="s1">'un'</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span> <span class="s1">'ium'</span>
<span class="o">^</span>
<span class="ne">SyntaxError</span><span class="p">:</span> <span class="n">invalid</span> <span class="n">syntax</span>
<span class="o">>>></span> <span class="n">prefix</span> <span class="o">+</span> <span class="s1">'thon'</span>
<span class="s1">'Python'</span>
<span class="c1"># 在拆分长字符串时很有用。</span>
<span class="o">>>></span> <span class="n">text</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Put several strings within parentheses '</span>
<span class="o">...</span> <span class="s1">'to have them joined together.'</span><span class="p">)</span>
<span class="o">>>></span> <span class="n">text</span>
<span class="s1">'Put several strings within parentheses to have them joined together.'</span>
</pre></div>
<p>字符串下标又称索引和C类似 ,第一个字符索引为 0 。没有独立的字符类型,字符就是长度为 1 的字符串,也可以使用负数,-1表示倒数第一个,-2表示倒数第二个,以此类推。不存在的下标会报IndexError。</p>
<div class="highlight"><pre><span></span><span class="o">>>></span> <span class="n">word</span> <span class="o">=</span> <span class="s1">'Python'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># character in position 0</span>
<span class="s1">'P'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="c1"># character in position 5</span>
<span class="s1">'n'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># last character</span>
<span class="s1">'n'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># second-last character</span>
<span class="s1">'o'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">6</span><span class="p">]</span>
<span class="s1">'P'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">16</span><span class="p">]</span>
<span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">):</span>
<span class="n">File</span> <span class="s2">"<stdin>"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1</span><span class="p">,</span> <span class="ow">in</span> <span class="o"><</span><span class="n">module</span><span class="o">></span>
<span class="ne">IndexError</span><span class="p">:</span> <span class="n">string</span> <span class="n">index</span> <span class="n">out</span> <span class="n">of</span> <span class="nb">range</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="mi">16</span><span class="p">]</span>
<span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">):</span>
<span class="n">File</span> <span class="s2">"<stdin>"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1</span><span class="p">,</span> <span class="ow">in</span> <span class="o"><</span><span class="n">module</span><span class="o">></span>
<span class="ne">IndexError</span><span class="p">:</span> <span class="n">string</span> <span class="n">index</span> <span class="n">out</span> <span class="n">of</span> <span class="nb">range</span>
</pre></div>
<p>字符串支持切片:由两个索引,中间是冒号。第一个索引表示起点,包含该元素,默认为0;第2个索引表示终点,不包含该元素,默认为字符串末尾。s[:i] + s[i:]等同于s。</p>
<div class="highlight"><pre><span></span><span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># characters from position 0 (included) to 2 (excluded)</span>
<span class="s1">'Py'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="c1"># characters from position 2 (included) to 5 (excluded)</span>
<span class="s1">'tho'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span>
<span class="s1">'Python'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[:</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">4</span><span class="p">:]</span>
<span class="s1">'Python'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># character from the beginning to position 2 (excluded)</span>
<span class="s1">'Py'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="mi">4</span><span class="p">:]</span> <span class="c1"># characters from position 4 (included) to the end</span>
<span class="s1">'on'</span>
<span class="o">>>></span> <span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">:]</span> <span class="c1"># characters from the second-last (included) to the end</span>
<span class="s1">'on'</span>
</pre></div>
<p>记住切片的工作方式:切片索引是在字符之间。左边第一个字符的索引为0,右界索引为字符串长度n 。例如:</p>
<div class="highlight"><pre><span></span> <span class="o">+---+---+---+---+---+---+</span>
<span class="o">|</span> <span class="n">P</span> <span class="o">|</span> <span class="n">y</span> <span class="o">|</span> <span class="n">t</span> <span class="o">|</span> <span class="n">h</span> <span class="o">|</span> <span class="n">o</span> <span class="o">|</span> <span class="n">n</span> <span class="o">|</span>
<span class="o">+---+---+---+---+---+---+</span>
<span class="mi">0</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span>
<span class="o">-</span><span class="mi">6</span> <span class="o">-</span><span class="mi">5</span> <span class="o">-</span><span class="mi">4</span> <span class="o">-</span><span class="mi">3</span> <span class="o">-</span><span class="mi">2</span> <span class="o">-</span><span class="mi">1</span>
</pre></div>
<p>第一行数字给出字符串正索引点值0...5 。第二行给出相应的负索引。切片是从 i 到 j 两个数值标示的边界之间的所有字符。</p>
<p>对于非负索引,如果两个索引都在边界内,切片长度就是两个索引之差。例如, word[1:3] 是 2 。</p>
<p>切片时,下标溢出不会报错。</p>
<div class="highlight"><pre><span></span>>>> word[4:42]
'on'
>>> word[43:42]
''
</pre></div>
<p>Python的字符串是不可变。向字符串文本的某一个索引赋值会引发错误:</p>
<div class="highlight"><pre><span></span>>>> word[0] = 'J'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
</pre></div>
<p>通过联合(加号)可以简单高效的创建字符串。(注,jython中这种操作并不高效)。</p>
<div class="highlight"><pre><span></span>>>> 'J' + word[1:]
'Jython'
>>> word[:2] + 'py'
'Pypy'
</pre></div>
<p>内置函数len()返回字符串长度:</p>
<div class="highlight"><pre><span></span>>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34
</pre></div>
<ul>
<li>试题</li>
</ul>
<p>1,下面哪个个字符串定义有错误?</p>
<p>A,r'C:\Program Files\foo\bar'
B,r'C:\Program Files\foo\bar\'
C, r'C:\Program Files\foo\bar\'
D,r'C:\Program Files\foo\bar\\'</p>
<p>2,min('abcd')的结果是?</p>
<p>A,a B,b |C,c D,d</p>
<p>2,max('abcd3A')的结果是?
A,a B,3 |C,A D,d</p>
<h2 id="_2">参考资料</h2>
<ul>
<li>Sequence Types — str, unicode, list, tuple, bytearray, buffer, xrange <a href="https://docs.python.org/3/tutorial/introduction.html#strings">https://docs.python.org/3/tutorial/introduction.html#strings</a> </li>
<li>String Methods: <a href="https://docs.python.org/3/library/stdtypes.html#string-methods">https://docs.python.org/3/library/stdtypes.html#string-methods</a></li>
<li>String Formatting:<a href="https://docs.python.org/3/library/string.html#new-string-formatting">https://docs.python.org/3/library/string.html#new-string-formatting</a></li>
<li>String Formatting Operations: <a href="https://docs.python.org/2/library/stdtypes.html#string-formatting">https://docs.python.org/2/library/stdtypes.html#string-formatting</a></li>
<li>python测试等IT技术支持qq群: 144081101(后期会录制视频存在该群群文件) 591302926 567351477 钉钉免费群:21745728</li>
<li>道家技术-手相手诊看相中医等钉钉群21734177 qq群:391441566 184175668 338228106 看手相、面相、舌相、抽签、体质识别。服务费50元每人次起。请联系钉钉或者微信pythontesting</li>
<li><a href="https://china-testing.github.io/python3_crash6.html">本文最新版本地址</a></li>
<li><a href="https://github.com/china-testing/python-api-tesing">本文涉及的python测试开发库</a> 谢谢点赞!</li>
<li><a href="https://github.com/china-testing/python-api-tesing/blob/master/books.md">本文相关海量书籍下载</a></li>
<li><a href="https://china-testing.github.io/testing_training.html">接口自动化性能测试线上培训大纲</a></li>
</ul>
</div><!-- /.entry-content -->
</article>
</section>
<section id="extras" class="body">
<div class="blogroll">
<h2>links</h2>
<ul>
<li><a href="https://china-testing.github.io/testing_training.html">自动化性能接口测试线上及深圳培训与项目实战 qq群:144081101 591302926</a></li>
<li><a href="http://blog.sciencenet.cn/blog-2604609-1112306.html">pandas数据分析scrapy爬虫 521070358 Py人工智能pandas-opencv 6089740</a></li>
<li><a href="http://blog.sciencenet.cn/blog-2604609-1112306.html">中医解梦看相八字算命qq群 391441566 csdn书籍下载-python爬虫 437355848</a></li>
</ul>
</div><!-- /.blogroll -->
</section><!-- /#extras -->
<footer id="contentinfo" class="body">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.
</address><!-- /#about -->
<p>The theme is by <a href="http://coding.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/">Smashing Magazine</a>, thanks!</p>
</footer><!-- /#contentinfo -->
</body>
</html>