-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathregexp.html
1261 lines (1221 loc) · 101 KB
/
regexp.html
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
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>第 9 章 正则表达式 | 数据工程讲义:经济学分册</title>
<meta name="description" content="适用于数据工程与数据科学课程的教材。" />
<meta name="generator" content="bookdown 0.30 and GitBook 2.6.7" />
<meta property="og:title" content="第 9 章 正则表达式 | 数据工程讲义:经济学分册" />
<meta property="og:type" content="book" />
<meta property="og:description" content="适用于数据工程与数据科学课程的教材。" />
<meta name="github-repo" content="yihui/bookdown-chinese" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="第 9 章 正则表达式 | 数据工程讲义:经济学分册" />
<meta name="twitter:description" content="适用于数据工程与数据科学课程的教材。" />
<meta name="author" content="史冬波 续本达" />
<meta name="date" content="2023-11-11" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="prev" href="py.html"/>
<link rel="next" href="cml.html"/>
<script src="libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/fuse.min.js"></script>
<link href="libs/gitbook-2.6.7/css/style.css" rel="stylesheet" />
<link href="libs/gitbook-2.6.7/css/plugin-table.css" rel="stylesheet" />
<link href="libs/gitbook-2.6.7/css/plugin-bookdown.css" rel="stylesheet" />
<link href="libs/gitbook-2.6.7/css/plugin-highlight.css" rel="stylesheet" />
<link href="libs/gitbook-2.6.7/css/plugin-search.css" rel="stylesheet" />
<link href="libs/gitbook-2.6.7/css/plugin-fontsettings.css" rel="stylesheet" />
<link href="libs/gitbook-2.6.7/css/plugin-clipboard.css" rel="stylesheet" />
<link href="libs/anchor-sections-1.1.0/anchor-sections.css" rel="stylesheet" />
<link href="libs/anchor-sections-1.1.0/anchor-sections-hash.css" rel="stylesheet" />
<script src="libs/anchor-sections-1.1.0/anchor-sections.js"></script>
<script src="libs/htmlwidgets-1.6.2/htmlwidgets.js"></script>
<script src="libs/viz-1.8.2/viz.js"></script>
<link href="libs/DiagrammeR-styles-0.2/styles.css" rel="stylesheet" />
<script src="libs/grViz-binding-1.0.10/grViz.js"></script>
<style type="text/css">
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" href="css/style.css" type="text/css" />
</head>
<body>
<div class="book without-animation with-summary font-size-2 font-family-1" data-basepath=".">
<div class="book-summary">
<nav role="navigation">
<ul class="summary">
<li><a href="./">数据工程讲义</a></li>
<li class="divider"></li>
<li class="chapter" data-level="" data-path="index.html"><a href="index.html"><i class="fa fa-check"></i>前言</a>
<ul>
<li class="chapter" data-level="" data-path="index.html"><a href="index.html#致谢"><i class="fa fa-check"></i>致谢</a></li>
</ul></li>
<li class="chapter" data-level="" data-path="author.html"><a href="author.html"><i class="fa fa-check"></i>作者简介</a></li>
<li class="chapter" data-level="1" data-path="intro.html"><a href="intro.html"><i class="fa fa-check"></i><b>1</b> 写在前面</a>
<ul>
<li class="chapter" data-level="1.1" data-path="intro.html"><a href="intro.html#为什么写本书"><i class="fa fa-check"></i><b>1.1</b> 为什么写本书</a></li>
<li class="chapter" data-level="1.2" data-path="intro.html"><a href="intro.html#如何使用本书"><i class="fa fa-check"></i><b>1.2</b> 如何使用本书</a></li>
</ul></li>
<li class="chapter" data-level="2" data-path="flow.html"><a href="flow.html"><i class="fa fa-check"></i><b>2</b> 数据工程:重塑经济学研究的流程</a>
<ul>
<li class="chapter" data-level="2.1" data-path="flow.html"><a href="flow.html#人工智能时代的社会科学研究机遇与挑战"><i class="fa fa-check"></i><b>2.1</b> 人工智能时代的社会科学研究:机遇与挑战</a>
<ul>
<li class="chapter" data-level="2.1.1" data-path="flow.html"><a href="flow.html#社会科学的三圈分类"><i class="fa fa-check"></i><b>2.1.1</b> 社会科学的三圈分类</a></li>
<li class="chapter" data-level="2.1.2" data-path="flow.html"><a href="flow.html#ai智能发展的三要素"><i class="fa fa-check"></i><b>2.1.2</b> AI智能发展的三要素</a></li>
<li class="chapter" data-level="2.1.3" data-path="flow.html"><a href="flow.html#ai对社会科学研究的冲击"><i class="fa fa-check"></i><b>2.1.3</b> AI对社会科学研究的冲击</a></li>
<li class="chapter" data-level="2.1.4" data-path="flow.html"><a href="flow.html#ai为社会科学研究创造的机遇"><i class="fa fa-check"></i><b>2.1.4</b> AI为社会科学研究创造的机遇</a></li>
</ul></li>
<li class="chapter" data-level="2.2" data-path="flow.html"><a href="flow.html#数据工程与数据科学"><i class="fa fa-check"></i><b>2.2</b> 数据工程与数据科学</a>
<ul>
<li class="chapter" data-level="2.2.1" data-path="flow.html"><a href="flow.html#数据工程的灵魂数据流"><i class="fa fa-check"></i><b>2.2.1</b> 数据工程的灵魂:数据流</a></li>
<li class="chapter" data-level="2.2.2" data-path="flow.html"><a href="flow.html#数据工程的钥匙数据结构"><i class="fa fa-check"></i><b>2.2.2</b> 数据工程的钥匙:数据结构</a></li>
<li class="chapter" data-level="2.2.3" data-path="flow.html"><a href="flow.html#数据工程师的工具箱"><i class="fa fa-check"></i><b>2.2.3</b> 数据工程师的工具箱</a></li>
</ul></li>
<li class="chapter" data-level="2.3" data-path="flow.html"><a href="flow.html#数据工程的四个指导原则"><i class="fa fa-check"></i><b>2.3</b> 数据工程的四个指导原则</a>
<ul>
<li class="chapter" data-level="2.3.1" data-path="flow.html"><a href="flow.html#可复现性原则"><i class="fa fa-check"></i><b>2.3.1</b> 可复现性原则</a></li>
<li class="chapter" data-level="2.3.2" data-path="flow.html"><a href="flow.html#模块化与正交分解原则"><i class="fa fa-check"></i><b>2.3.2</b> 模块化与正交分解原则</a></li>
<li class="chapter" data-level="2.3.3" data-path="flow.html"><a href="flow.html#最佳工具原则"><i class="fa fa-check"></i><b>2.3.3</b> 最佳工具原则</a></li>
<li class="chapter" data-level="2.3.4" data-path="flow.html"><a href="flow.html#一次原则"><i class="fa fa-check"></i><b>2.3.4</b> 一次原则</a></li>
</ul></li>
<li class="chapter" data-level="2.4" data-path="flow.html"><a href="flow.html#gnu-环境"><i class="fa fa-check"></i><b>2.4</b> GNU 环境</a>
<ul>
<li class="chapter" data-level="2.4.1" data-path="flow.html"><a href="flow.html#posix"><i class="fa fa-check"></i><b>2.4.1</b> POSIX</a></li>
<li class="chapter" data-level="2.4.2" data-path="flow.html"><a href="flow.html#gnu"><i class="fa fa-check"></i><b>2.4.2</b> GNU</a></li>
<li class="chapter" data-level="2.4.3" data-path="flow.html"><a href="flow.html#命令行"><i class="fa fa-check"></i><b>2.4.3</b> 命令行</a></li>
<li class="chapter" data-level="2.4.4" data-path="flow.html"><a href="flow.html#编辑器"><i class="fa fa-check"></i><b>2.4.4</b> 编辑器</a></li>
</ul></li>
<li class="chapter" data-level="2.5" data-path="flow.html"><a href="flow.html#版本控制"><i class="fa fa-check"></i><b>2.5</b> 版本控制</a>
<ul>
<li class="chapter" data-level="2.5.1" data-path="flow.html"><a href="flow.html#git"><i class="fa fa-check"></i><b>2.5.1</b> Git</a></li>
<li class="chapter" data-level="2.5.2" data-path="flow.html"><a href="flow.html#git的三种状态"><i class="fa fa-check"></i><b>2.5.2</b> Git的三种状态</a></li>
<li class="chapter" data-level="2.5.3" data-path="flow.html"><a href="flow.html#git仓库"><i class="fa fa-check"></i><b>2.5.3</b> Git仓库</a></li>
<li class="chapter" data-level="2.5.4" data-path="flow.html"><a href="flow.html#git命令实践"><i class="fa fa-check"></i><b>2.5.4</b> Git命令实践</a></li>
<li class="chapter" data-level="2.5.5" data-path="flow.html"><a href="flow.html#git目前的局限性"><i class="fa fa-check"></i><b>2.5.5</b> Git目前的局限性</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="3" data-path="basic.html"><a href="basic.html"><i class="fa fa-check"></i><b>3</b> R语言基础</a>
<ul>
<li class="chapter" data-level="3.1" data-path="basic.html"><a href="basic.html#r语言简介"><i class="fa fa-check"></i><b>3.1</b> R语言简介</a></li>
<li class="chapter" data-level="3.2" data-path="basic.html"><a href="basic.html#r语言的特点"><i class="fa fa-check"></i><b>3.2</b> R语言的特点</a></li>
<li class="chapter" data-level="3.3" data-path="basic.html"><a href="basic.html#r与rtudio的安装"><i class="fa fa-check"></i><b>3.3</b> R与Rtudio的安装</a>
<ul>
<li class="chapter" data-level="3.3.1" data-path="basic.html"><a href="basic.html#安装r"><i class="fa fa-check"></i><b>3.3.1</b> 安装R</a></li>
<li class="chapter" data-level="3.3.2" data-path="basic.html"><a href="basic.html#r安装rstudio"><i class="fa fa-check"></i><b>3.3.2</b> R安装RStudio</a></li>
<li class="chapter" data-level="3.3.3" data-path="basic.html"><a href="basic.html#组织r代码的三种方式"><i class="fa fa-check"></i><b>3.3.3</b> 组织R代码的三种方式</a></li>
<li class="chapter" data-level="3.3.4" data-path="basic.html"><a href="basic.html#r代码的组成"><i class="fa fa-check"></i><b>3.3.4</b> R代码的组成</a></li>
</ul></li>
<li class="chapter" data-level="3.4" data-path="basic.html"><a href="basic.html#r对文件和路径的相关操作"><i class="fa fa-check"></i><b>3.4</b> R对文件和路径的相关操作</a>
<ul>
<li class="chapter" data-level="3.4.1" data-path="basic.html"><a href="basic.html#路径操作"><i class="fa fa-check"></i><b>3.4.1</b> 路径操作</a></li>
<li class="chapter" data-level="3.4.2" data-path="basic.html"><a href="basic.html#文件操作"><i class="fa fa-check"></i><b>3.4.2</b> 文件操作</a></li>
<li class="chapter" data-level="3.4.3" data-path="basic.html"><a href="basic.html#特殊路径"><i class="fa fa-check"></i><b>3.4.3</b> 特殊路径</a></li>
</ul></li>
<li class="chapter" data-level="3.5" data-path="basic.html"><a href="basic.html#数据类型"><i class="fa fa-check"></i><b>3.5</b> 数据类型</a>
<ul>
<li class="chapter" data-level="3.5.1" data-path="basic.html"><a href="basic.html#数值型"><i class="fa fa-check"></i><b>3.5.1</b> 数值型</a></li>
<li class="chapter" data-level="3.5.2" data-path="basic.html"><a href="basic.html#逻辑型布尔型"><i class="fa fa-check"></i><b>3.5.2</b> 逻辑型/布尔型</a></li>
<li class="chapter" data-level="3.5.3" data-path="basic.html"><a href="basic.html#字符型"><i class="fa fa-check"></i><b>3.5.3</b> 字符型</a></li>
<li class="chapter" data-level="3.5.4" data-path="basic.html"><a href="basic.html#缺失值"><i class="fa fa-check"></i><b>3.5.4</b> 缺失值</a></li>
<li class="chapter" data-level="3.5.5" data-path="basic.html"><a href="basic.html#数据类型判断与转换"><i class="fa fa-check"></i><b>3.5.5</b> 数据类型判断与转换</a></li>
<li class="chapter" data-level="3.5.6" data-path="basic.html"><a href="basic.html#运算"><i class="fa fa-check"></i><b>3.5.6</b> 运算</a></li>
</ul></li>
<li class="chapter" data-level="3.6" data-path="basic.html"><a href="basic.html#变量"><i class="fa fa-check"></i><b>3.6</b> 变量</a></li>
<li class="chapter" data-level="3.7" data-path="basic.html"><a href="basic.html#数据结构"><i class="fa fa-check"></i><b>3.7</b> 数据结构</a>
<ul>
<li class="chapter" data-level="3.7.1" data-path="basic.html"><a href="basic.html#向量"><i class="fa fa-check"></i><b>3.7.1</b> 向量</a></li>
<li class="chapter" data-level="3.7.2" data-path="basic.html"><a href="basic.html#因子"><i class="fa fa-check"></i><b>3.7.2</b> 因子</a></li>
<li class="chapter" data-level="3.7.3" data-path="basic.html"><a href="basic.html#矩阵"><i class="fa fa-check"></i><b>3.7.3</b> 矩阵</a></li>
<li class="chapter" data-level="3.7.4" data-path="basic.html"><a href="basic.html#数据框"><i class="fa fa-check"></i><b>3.7.4</b> 数据框</a></li>
<li class="chapter" data-level="3.7.5" data-path="basic.html"><a href="basic.html#列表"><i class="fa fa-check"></i><b>3.7.5</b> 列表</a></li>
<li class="chapter" data-level="3.7.6" data-path="basic.html"><a href="basic.html#数据结构之间的转化"><i class="fa fa-check"></i><b>3.7.6</b> 数据结构之间的转化</a></li>
</ul></li>
<li class="chapter" data-level="3.8" data-path="basic.html"><a href="basic.html#数据读写"><i class="fa fa-check"></i><b>3.8</b> 数据读写</a>
<ul>
<li class="chapter" data-level="3.8.1" data-path="basic.html"><a href="basic.html#csv文件"><i class="fa fa-check"></i><b>3.8.1</b> csv文件</a></li>
<li class="chapter" data-level="3.8.2" data-path="basic.html"><a href="basic.html#hdf5"><i class="fa fa-check"></i><b>3.8.2</b> HDF5</a></li>
<li class="chapter" data-level="3.8.3" data-path="basic.html"><a href="basic.html#xml"><i class="fa fa-check"></i><b>3.8.3</b> XML</a></li>
<li class="chapter" data-level="3.8.4" data-path="basic.html"><a href="basic.html#json"><i class="fa fa-check"></i><b>3.8.4</b> JSON</a></li>
<li class="chapter" data-level="3.8.5" data-path="basic.html"><a href="basic.html#yaml"><i class="fa fa-check"></i><b>3.8.5</b> YAML</a></li>
<li class="chapter" data-level="3.8.6" data-path="basic.html"><a href="basic.html#专用数据文件"><i class="fa fa-check"></i><b>3.8.6</b> 专用数据文件</a></li>
</ul></li>
<li class="chapter" data-level="3.9" data-path="basic.html"><a href="basic.html#流程控制"><i class="fa fa-check"></i><b>3.9</b> 流程控制</a>
<ul>
<li class="chapter" data-level="3.9.1" data-path="basic.html"><a href="basic.html#条件判断"><i class="fa fa-check"></i><b>3.9.1</b> 条件判断</a></li>
<li class="chapter" data-level="3.9.2" data-path="basic.html"><a href="basic.html#循环"><i class="fa fa-check"></i><b>3.9.2</b> 循环</a></li>
</ul></li>
<li class="chapter" data-level="3.10" data-path="basic.html"><a href="basic.html#函数与包"><i class="fa fa-check"></i><b>3.10</b> 函数与包</a>
<ul>
<li class="chapter" data-level="3.10.1" data-path="basic.html"><a href="basic.html#函数的定义与调用"><i class="fa fa-check"></i><b>3.10.1</b> 函数的定义与调用</a></li>
<li class="chapter" data-level="3.10.2" data-path="basic.html"><a href="basic.html#变量作用域"><i class="fa fa-check"></i><b>3.10.2</b> 变量作用域</a></li>
<li class="chapter" data-level="3.10.3" data-path="basic.html"><a href="basic.html#函数模块化"><i class="fa fa-check"></i><b>3.10.3</b> 函数模块化</a></li>
<li class="chapter" data-level="3.10.4" data-path="basic.html"><a href="basic.html#包"><i class="fa fa-check"></i><b>3.10.4</b> 包</a></li>
</ul></li>
<li class="chapter" data-level="3.11" data-path="basic.html"><a href="basic.html#向量化"><i class="fa fa-check"></i><b>3.11</b> 向量化</a>
<ul>
<li class="chapter" data-level="3.11.1" data-path="basic.html"><a href="basic.html#apply"><i class="fa fa-check"></i><b>3.11.1</b> apply</a></li>
<li class="chapter" data-level="3.11.2" data-path="basic.html"><a href="basic.html#lapply"><i class="fa fa-check"></i><b>3.11.2</b> lapply</a></li>
<li class="chapter" data-level="3.11.3" data-path="basic.html"><a href="basic.html#sapply"><i class="fa fa-check"></i><b>3.11.3</b> sapply</a></li>
<li class="chapter" data-level="3.11.4" data-path="basic.html"><a href="basic.html#vapply"><i class="fa fa-check"></i><b>3.11.4</b> vapply</a></li>
<li class="chapter" data-level="3.11.5" data-path="basic.html"><a href="basic.html#mapply"><i class="fa fa-check"></i><b>3.11.5</b> mapply</a></li>
<li class="chapter" data-level="3.11.6" data-path="basic.html"><a href="basic.html#其他"><i class="fa fa-check"></i><b>3.11.6</b> 其他</a></li>
</ul></li>
<li class="chapter" data-level="3.12" data-path="basic.html"><a href="basic.html#代码风格"><i class="fa fa-check"></i><b>3.12</b> 代码风格</a></li>
</ul></li>
<li class="chapter" data-level="4" data-path="rmd.html"><a href="rmd.html"><i class="fa fa-check"></i><b>4</b> 文学式编程</a>
<ul>
<li class="chapter" data-level="4.1" data-path="rmd.html"><a href="rmd.html#什么是文学式编程"><i class="fa fa-check"></i><b>4.1</b> 什么是文学式编程</a></li>
<li class="chapter" data-level="4.2" data-path="rmd.html"><a href="rmd.html#markdown格式"><i class="fa fa-check"></i><b>4.2</b> Markdown格式</a>
<ul>
<li class="chapter" data-level="4.2.1" data-path="rmd.html"><a href="rmd.html#标题"><i class="fa fa-check"></i><b>4.2.1</b> 标题</a></li>
<li class="chapter" data-level="4.2.2" data-path="rmd.html"><a href="rmd.html#段落文本"><i class="fa fa-check"></i><b>4.2.2</b> 段落文本</a></li>
<li class="chapter" data-level="4.2.3" data-path="rmd.html"><a href="rmd.html#表格"><i class="fa fa-check"></i><b>4.2.3</b> 表格</a></li>
<li class="chapter" data-level="4.2.4" data-path="rmd.html"><a href="rmd.html#图片"><i class="fa fa-check"></i><b>4.2.4</b> 图片</a></li>
<li class="chapter" data-level="4.2.5" data-path="rmd.html"><a href="rmd.html#代码块"><i class="fa fa-check"></i><b>4.2.5</b> 代码块</a></li>
<li class="chapter" data-level="4.2.6" data-path="rmd.html"><a href="rmd.html#数学公式"><i class="fa fa-check"></i><b>4.2.6</b> 数学公式</a></li>
</ul></li>
<li class="chapter" data-level="4.3" data-path="rmd.html"><a href="rmd.html#rmarkdown"><i class="fa fa-check"></i><b>4.3</b> Rmarkdown</a>
<ul>
<li class="chapter" data-level="4.3.1" data-path="rmd.html"><a href="rmd.html#yaml头文件"><i class="fa fa-check"></i><b>4.3.1</b> YAML头文件</a></li>
<li class="chapter" data-level="4.3.2" data-path="rmd.html"><a href="rmd.html#代码块控制"><i class="fa fa-check"></i><b>4.3.2</b> 代码块控制</a></li>
<li class="chapter" data-level="4.3.3" data-path="rmd.html"><a href="rmd.html#rmarkdown特殊语法"><i class="fa fa-check"></i><b>4.3.3</b> Rmarkdown特殊语法</a></li>
<li class="chapter" data-level="4.3.4" data-path="rmd.html"><a href="rmd.html#格式转换"><i class="fa fa-check"></i><b>4.3.4</b> 格式转换</a></li>
</ul></li>
<li class="chapter" data-level="4.4" data-path="rmd.html"><a href="rmd.html#xaringan"><i class="fa fa-check"></i><b>4.4</b> Xaringan</a>
<ul>
<li class="chapter" data-level="4.4.1" data-path="rmd.html"><a href="rmd.html#安装与模板"><i class="fa fa-check"></i><b>4.4.1</b> 安装与模板</a></li>
<li class="chapter" data-level="4.4.2" data-path="rmd.html"><a href="rmd.html#其他学习资源"><i class="fa fa-check"></i><b>4.4.2</b> 其他学习资源</a></li>
</ul></li>
<li class="chapter" data-level="4.5" data-path="rmd.html"><a href="rmd.html#leanr"><i class="fa fa-check"></i><b>4.5</b> leanr</a>
<ul>
<li class="chapter" data-level="4.5.1" data-path="rmd.html"><a href="rmd.html#安装与模板-1"><i class="fa fa-check"></i><b>4.5.1</b> 安装与模板</a></li>
<li class="chapter" data-level="4.5.2" data-path="rmd.html"><a href="rmd.html#互动代码模块"><i class="fa fa-check"></i><b>4.5.2</b> 互动代码模块</a></li>
<li class="chapter" data-level="4.5.3" data-path="rmd.html"><a href="rmd.html#测试题"><i class="fa fa-check"></i><b>4.5.3</b> 测试题</a></li>
</ul></li>
<li class="chapter" data-level="4.6" data-path="rmd.html"><a href="rmd.html#bookdownblogdown以及pagedown"><i class="fa fa-check"></i><b>4.6</b> bookdown、blogdown以及pagedown</a></li>
<li class="chapter" data-level="4.7" data-path="rmd.html"><a href="rmd.html#quarto"><i class="fa fa-check"></i><b>4.7</b> Quarto</a></li>
</ul></li>
<li class="chapter" data-level="5" data-path="manipulate.html"><a href="manipulate.html"><i class="fa fa-check"></i><b>5</b> 数据整理</a>
<ul>
<li class="chapter" data-level="5.1" data-path="manipulate.html"><a href="manipulate.html#整齐数据tidydata"><i class="fa fa-check"></i><b>5.1</b> 整齐数据tidydata</a>
<ul>
<li class="chapter" data-level="5.1.1" data-path="manipulate.html"><a href="manipulate.html#分析单位unit-of-analysis"><i class="fa fa-check"></i><b>5.1.1</b> 分析单位(unit of analysis)</a></li>
</ul></li>
<li class="chapter" data-level="5.2" data-path="manipulate.html"><a href="manipulate.html#整齐数据"><i class="fa fa-check"></i><b>5.2</b> 整齐数据</a>
<ul>
<li class="chapter" data-level="5.2.1" data-path="manipulate.html"><a href="manipulate.html#整齐数据的缘起"><i class="fa fa-check"></i><b>5.2.1</b> 整齐数据的缘起</a></li>
<li class="chapter" data-level="5.2.2" data-path="manipulate.html"><a href="manipulate.html#整齐数据的定义"><i class="fa fa-check"></i><b>5.2.2</b> 整齐数据的定义</a></li>
<li class="chapter" data-level="5.2.3" data-path="manipulate.html"><a href="manipulate.html#数据的凌乱点"><i class="fa fa-check"></i><b>5.2.3</b> 数据的凌乱点</a></li>
</ul></li>
<li class="chapter" data-level="5.3" data-path="manipulate.html"><a href="manipulate.html#关系代数"><i class="fa fa-check"></i><b>5.3</b> 关系代数</a></li>
<li class="chapter" data-level="5.4" data-path="manipulate.html"><a href="manipulate.html#sql语言"><i class="fa fa-check"></i><b>5.4</b> SQL语言</a>
<ul>
<li class="chapter" data-level="5.4.1" data-path="manipulate.html"><a href="manipulate.html#mysql"><i class="fa fa-check"></i><b>5.4.1</b> MySQL</a></li>
<li class="chapter" data-level="5.4.2" data-path="manipulate.html"><a href="manipulate.html#postgresql"><i class="fa fa-check"></i><b>5.4.2</b> Postgresql</a></li>
</ul></li>
<li class="chapter" data-level="5.5" data-path="manipulate.html"><a href="manipulate.html#dplyr"><i class="fa fa-check"></i><b>5.5</b> dplyr</a>
<ul>
<li class="chapter" data-level="5.5.1" data-path="manipulate.html"><a href="manipulate.html#集合运算"><i class="fa fa-check"></i><b>5.5.1</b> 集合运算</a></li>
<li class="chapter" data-level="5.5.2" data-path="manipulate.html"><a href="manipulate.html#线性运算"><i class="fa fa-check"></i><b>5.5.2</b> 线性运算</a></li>
<li class="chapter" data-level="5.5.3" data-path="manipulate.html"><a href="manipulate.html#管道"><i class="fa fa-check"></i><b>5.5.3</b> 管道</a></li>
<li class="chapter" data-level="5.5.4" data-path="manipulate.html"><a href="manipulate.html#数据连接"><i class="fa fa-check"></i><b>5.5.4</b> 数据连接</a></li>
<li class="chapter" data-level="5.5.5" data-path="manipulate.html"><a href="manipulate.html#数据分组与汇总"><i class="fa fa-check"></i><b>5.5.5</b> 数据分组与汇总</a></li>
</ul></li>
<li class="chapter" data-level="5.6" data-path="manipulate.html"><a href="manipulate.html#宽数据与长数据的转换"><i class="fa fa-check"></i><b>5.6</b> 宽数据与长数据的转换</a>
<ul>
<li class="chapter" data-level="5.6.1" data-path="manipulate.html"><a href="manipulate.html#宽数据转长数据"><i class="fa fa-check"></i><b>5.6.1</b> 宽数据转长数据</a></li>
<li class="chapter" data-level="5.6.2" data-path="manipulate.html"><a href="manipulate.html#长数据转宽数据"><i class="fa fa-check"></i><b>5.6.2</b> 长数据转宽数据</a></li>
<li class="chapter" data-level="5.6.3" data-path="manipulate.html"><a href="manipulate.html#联系人数据表的案例"><i class="fa fa-check"></i><b>5.6.3</b> 联系人数据表的案例</a></li>
</ul></li>
<li class="chapter" data-level="5.7" data-path="manipulate.html"><a href="manipulate.html#其他定制操作"><i class="fa fa-check"></i><b>5.7</b> 其他定制操作</a>
<ul>
<li class="chapter" data-level="5.7.1" data-path="manipulate.html"><a href="manipulate.html#排序"><i class="fa fa-check"></i><b>5.7.1</b> 排序</a></li>
<li class="chapter" data-level="5.7.2" data-path="manipulate.html"><a href="manipulate.html#抽样"><i class="fa fa-check"></i><b>5.7.2</b> 抽样</a></li>
<li class="chapter" data-level="5.7.3" data-path="manipulate.html"><a href="manipulate.html#去重复"><i class="fa fa-check"></i><b>5.7.3</b> 去重复</a></li>
<li class="chapter" data-level="5.7.4" data-path="manipulate.html"><a href="manipulate.html#缺失值处理"><i class="fa fa-check"></i><b>5.7.4</b> 缺失值处理</a></li>
<li class="chapter" data-level="5.7.5" data-path="manipulate.html"><a href="manipulate.html#拆分与合并数据列"><i class="fa fa-check"></i><b>5.7.5</b> 拆分与合并数据列</a></li>
<li class="chapter" data-level="5.7.6" data-path="manipulate.html"><a href="manipulate.html#合并数据"><i class="fa fa-check"></i><b>5.7.6</b> 合并数据</a></li>
</ul></li>
<li class="chapter" data-level="5.8" data-path="manipulate.html"><a href="manipulate.html#数据库的连接"><i class="fa fa-check"></i><b>5.8</b> 数据库的连接</a></li>
<li class="chapter" data-level="5.9" data-path="manipulate.html"><a href="manipulate.html#data.table"><i class="fa fa-check"></i><b>5.9</b> data.table</a></li>
</ul></li>
<li class="chapter" data-level="6" data-path="visu.html"><a href="visu.html"><i class="fa fa-check"></i><b>6</b> 数据可视化</a>
<ul>
<li class="chapter" data-level="6.1" data-path="visu.html"><a href="visu.html#从一个可以画恐龙的包说起"><i class="fa fa-check"></i><b>6.1</b> 从一个可以画恐龙的包说起</a></li>
<li class="chapter" data-level="6.2" data-path="visu.html"><a href="visu.html#数据可视化的目的"><i class="fa fa-check"></i><b>6.2</b> 数据可视化的目的</a></li>
<li class="chapter" data-level="6.3" data-path="visu.html"><a href="visu.html#图形语法grammar-of-graphics"><i class="fa fa-check"></i><b>6.3</b> 图形语法(Grammar of Graphics)</a></li>
<li class="chapter" data-level="6.4" data-path="visu.html"><a href="visu.html#ggplot2"><i class="fa fa-check"></i><b>6.4</b> <code>ggplot2</code></a>
<ul>
<li class="chapter" data-level="6.4.1" data-path="visu.html"><a href="visu.html#ggplot2几何对象"><i class="fa fa-check"></i><b>6.4.1</b> <code>ggplot2</code>几何对象</a></li>
<li class="chapter" data-level="6.4.2" data-path="visu.html"><a href="visu.html#ggplot2的美术属性"><i class="fa fa-check"></i><b>6.4.2</b> <code>ggplot2</code>的美术属性</a></li>
<li class="chapter" data-level="6.4.3" data-path="visu.html"><a href="visu.html#ggplot2辅助"><i class="fa fa-check"></i><b>6.4.3</b> <code>ggplot2</code>辅助</a></li>
</ul></li>
<li class="chapter" data-level="6.5" data-path="visu.html"><a href="visu.html#案例did结果的可视化"><i class="fa fa-check"></i><b>6.5</b> 案例:DID结果的可视化</a></li>
<li class="chapter" data-level="6.6" data-path="visu.html"><a href="visu.html#动图"><i class="fa fa-check"></i><b>6.6</b> 动图</a></li>
<li class="chapter" data-level="6.7" data-path="visu.html"><a href="visu.html#大屏"><i class="fa fa-check"></i><b>6.7</b> 大屏</a>
<ul>
<li class="chapter" data-level="6.7.1" data-path="visu.html"><a href="visu.html#交互式"><i class="fa fa-check"></i><b>6.7.1</b> 交互式</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="7" data-path="reg.html"><a href="reg.html"><i class="fa fa-check"></i><b>7</b> 回归</a>
<ul>
<li class="chapter" data-level="7.1" data-path="reg.html"><a href="reg.html#一般线性回归"><i class="fa fa-check"></i><b>7.1</b> 一般线性回归</a>
<ul>
<li class="chapter" data-level="7.1.1" data-path="reg.html"><a href="reg.html#基础模型"><i class="fa fa-check"></i><b>7.1.1</b> 基础模型</a></li>
<li class="chapter" data-level="7.1.2" data-path="reg.html"><a href="reg.html#稳健性标准误"><i class="fa fa-check"></i><b>7.1.2</b> 稳健性标准误</a></li>
</ul></li>
<li class="chapter" data-level="7.2" data-path="reg.html"><a href="reg.html#因果推断的反事实框架"><i class="fa fa-check"></i><b>7.2</b> 因果推断的反事实框架</a>
<ul>
<li class="chapter" data-level="7.2.1" data-path="reg.html"><a href="reg.html#定义因果关系"><i class="fa fa-check"></i><b>7.2.1</b> 定义因果关系</a></li>
<li class="chapter" data-level="7.2.2" data-path="reg.html"><a href="reg.html#cef三定理"><i class="fa fa-check"></i><b>7.2.2</b> CEF三定理</a></li>
<li class="chapter" data-level="7.2.3" data-path="reg.html"><a href="reg.html#交互项还是分组回归"><i class="fa fa-check"></i><b>7.2.3</b> 交互项还是分组回归</a></li>
</ul></li>
<li class="chapter" data-level="7.3" data-path="reg.html"><a href="reg.html#匹配"><i class="fa fa-check"></i><b>7.3</b> 匹配</a>
<ul>
<li class="chapter" data-level="7.3.1" data-path="reg.html"><a href="reg.html#原理"><i class="fa fa-check"></i><b>7.3.1</b> 原理</a></li>
<li class="chapter" data-level="7.3.2" data-path="reg.html"><a href="reg.html#案例"><i class="fa fa-check"></i><b>7.3.2</b> 案例</a></li>
</ul></li>
<li class="chapter" data-level="7.4" data-path="reg.html"><a href="reg.html#工具变量"><i class="fa fa-check"></i><b>7.4</b> 工具变量</a>
<ul>
<li class="chapter" data-level="7.4.1" data-path="reg.html"><a href="reg.html#原理-1"><i class="fa fa-check"></i><b>7.4.1</b> 原理</a></li>
<li class="chapter" data-level="7.4.2" data-path="reg.html"><a href="reg.html#案例-1"><i class="fa fa-check"></i><b>7.4.2</b> 案例</a></li>
</ul></li>
<li class="chapter" data-level="7.5" data-path="reg.html"><a href="reg.html#双重差分"><i class="fa fa-check"></i><b>7.5</b> 双重差分</a>
<ul>
<li class="chapter" data-level="7.5.1" data-path="reg.html"><a href="reg.html#原理-2"><i class="fa fa-check"></i><b>7.5.1</b> 原理</a></li>
<li class="chapter" data-level="7.5.2" data-path="reg.html"><a href="reg.html#案例-2"><i class="fa fa-check"></i><b>7.5.2</b> 案例</a></li>
</ul></li>
<li class="chapter" data-level="7.6" data-path="reg.html"><a href="reg.html#断点回归"><i class="fa fa-check"></i><b>7.6</b> 断点回归</a>
<ul>
<li class="chapter" data-level="7.6.1" data-path="reg.html"><a href="reg.html#原理-3"><i class="fa fa-check"></i><b>7.6.1</b> 原理</a></li>
<li class="chapter" data-level="7.6.2" data-path="reg.html"><a href="reg.html#案例-3"><i class="fa fa-check"></i><b>7.6.2</b> 案例</a></li>
</ul></li>
<li class="chapter" data-level="7.7" data-path="reg.html"><a href="reg.html#包含高维分类变量的回归"><i class="fa fa-check"></i><b>7.7</b> 包含高维分类变量的回归</a></li>
<li class="chapter" data-level="7.8" data-path="reg.html"><a href="reg.html#formula-公式对象"><i class="fa fa-check"></i><b>7.8</b> formula (公式)对象</a>
<ul>
<li class="chapter" data-level="7.8.1" data-path="reg.html"><a href="reg.html#公式的生成"><i class="fa fa-check"></i><b>7.8.1</b> 公式的生成</a></li>
<li class="chapter" data-level="7.8.2" data-path="reg.html"><a href="reg.html#生成公式的运算符"><i class="fa fa-check"></i><b>7.8.2</b> 生成公式的运算符</a></li>
<li class="chapter" data-level="7.8.3" data-path="reg.html"><a href="reg.html#公式与字符串之间的转换"><i class="fa fa-check"></i><b>7.8.3</b> 公式与字符串之间的转换</a></li>
</ul></li>
<li class="chapter" data-level="7.9" data-path="reg.html"><a href="reg.html#表达式expression"><i class="fa fa-check"></i><b>7.9</b> 表达式expression</a></li>
<li class="chapter" data-level="7.10" data-path="reg.html"><a href="reg.html#表达式的生成与执行"><i class="fa fa-check"></i><b>7.10</b> 表达式的生成与执行</a></li>
<li class="chapter" data-level="7.11" data-path="reg.html"><a href="reg.html#表达式与字符串的转换"><i class="fa fa-check"></i><b>7.11</b> 表达式与字符串的转换</a></li>
<li class="chapter" data-level="7.12" data-path="reg.html"><a href="reg.html#使用stargazer输出表格"><i class="fa fa-check"></i><b>7.12</b> 使用stargazer输出表格</a>
<ul>
<li class="chapter" data-level="7.12.1" data-path="reg.html"><a href="reg.html#标准回归表"><i class="fa fa-check"></i><b>7.12.1</b> 标准回归表</a></li>
<li class="chapter" data-level="7.12.2" data-path="reg.html"><a href="reg.html#默认格式"><i class="fa fa-check"></i><b>7.12.2</b> 默认格式</a></li>
<li class="chapter" data-level="7.12.3" data-path="reg.html"><a href="reg.html#表格表头"><i class="fa fa-check"></i><b>7.12.3</b> 表格表头</a></li>
<li class="chapter" data-level="7.12.4" data-path="reg.html"><a href="reg.html#表格正文"><i class="fa fa-check"></i><b>7.12.4</b> 表格正文</a></li>
<li class="chapter" data-level="7.12.5" data-path="reg.html"><a href="reg.html#添加变量信息"><i class="fa fa-check"></i><b>7.12.5</b> 添加变量信息</a></li>
<li class="chapter" data-level="7.12.6" data-path="reg.html"><a href="reg.html#选择统计量"><i class="fa fa-check"></i><b>7.12.6</b> 选择统计量</a></li>
<li class="chapter" data-level="7.12.7" data-path="reg.html"><a href="reg.html#表格注释"><i class="fa fa-check"></i><b>7.12.7</b> 表格注释</a></li>
<li class="chapter" data-level="7.12.8" data-path="reg.html"><a href="reg.html#整体布局"><i class="fa fa-check"></i><b>7.12.8</b> 整体布局</a></li>
<li class="chapter" data-level="7.12.9" data-path="reg.html"><a href="reg.html#其他-1"><i class="fa fa-check"></i><b>7.12.9</b> 其他</a></li>
<li class="chapter" data-level="7.12.10" data-path="reg.html"><a href="reg.html#描述性统计表"><i class="fa fa-check"></i><b>7.12.10</b> 描述性统计表</a></li>
</ul></li>
<li class="chapter" data-level="7.13" data-path="reg.html"><a href="reg.html#回归结果的可视化"><i class="fa fa-check"></i><b>7.13</b> 回归结果的可视化</a>
<ul>
<li class="chapter" data-level="7.13.1" data-path="reg.html"><a href="reg.html#使用ggcoefstats可视化回归结果"><i class="fa fa-check"></i><b>7.13.1</b> 使用ggcoefstats可视化回归结果</a></li>
<li class="chapter" data-level="7.13.2" data-path="reg.html"><a href="reg.html#使用"><i class="fa fa-check"></i><b>7.13.2</b> 使用</a></li>
<li class="chapter" data-level="7.13.3" data-path="reg.html"><a href="reg.html#双重差分模型的可视化"><i class="fa fa-check"></i><b>7.13.3</b> 双重差分模型的可视化</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="8" data-path="py.html"><a href="py.html"><i class="fa fa-check"></i><b>8</b> Python基础</a>
<ul>
<li class="chapter" data-level="8.1" data-path="py.html"><a href="py.html#python简介"><i class="fa fa-check"></i><b>8.1</b> Python简介</a></li>
<li class="chapter" data-level="8.2" data-path="py.html"><a href="py.html#python安装与pycharm"><i class="fa fa-check"></i><b>8.2</b> Python安装与Pycharm</a>
<ul>
<li class="chapter" data-level="8.2.1" data-path="py.html"><a href="py.html#安装"><i class="fa fa-check"></i><b>8.2.1</b> 安装</a></li>
<li class="chapter" data-level="8.2.2" data-path="py.html"><a href="py.html#编辑器-1"><i class="fa fa-check"></i><b>8.2.2</b> 编辑器</a></li>
</ul></li>
<li class="chapter" data-level="8.3" data-path="py.html"><a href="py.html#变量-1"><i class="fa fa-check"></i><b>8.3</b> 变量</a></li>
<li class="chapter" data-level="8.4" data-path="py.html"><a href="py.html#数据类型-1"><i class="fa fa-check"></i><b>8.4</b> 数据类型</a>
<ul>
<li class="chapter" data-level="8.4.1" data-path="py.html"><a href="py.html#类型转换"><i class="fa fa-check"></i><b>8.4.1</b> 类型转换</a></li>
<li class="chapter" data-level="8.4.2" data-path="py.html"><a href="py.html#算术运算"><i class="fa fa-check"></i><b>8.4.2</b> 算术运算</a></li>
<li class="chapter" data-level="8.4.3" data-path="py.html"><a href="py.html#布尔运算"><i class="fa fa-check"></i><b>8.4.3</b> 布尔运算</a></li>
<li class="chapter" data-level="8.4.4" data-path="py.html"><a href="py.html#字符串"><i class="fa fa-check"></i><b>8.4.4</b> 字符串</a></li>
<li class="chapter" data-level="8.4.5" data-path="py.html"><a href="py.html#字符串的替换"><i class="fa fa-check"></i><b>8.4.5</b> 字符串的替换</a></li>
<li class="chapter" data-level="8.4.6" data-path="py.html"><a href="py.html#字符串的切片"><i class="fa fa-check"></i><b>8.4.6</b> 字符串的切片</a></li>
<li class="chapter" data-level="8.4.7" data-path="py.html"><a href="py.html#标准字符串操作"><i class="fa fa-check"></i><b>8.4.7</b> 标准字符串操作</a></li>
</ul></li>
<li class="chapter" data-level="8.5" data-path="py.html"><a href="py.html#标准输入输出"><i class="fa fa-check"></i><b>8.5</b> 标准输入输出</a>
<ul>
<li class="chapter" data-level="8.5.1" data-path="py.html"><a href="py.html#标准输入"><i class="fa fa-check"></i><b>8.5.1</b> 标准输入</a></li>
<li class="chapter" data-level="8.5.2" data-path="py.html"><a href="py.html#命令执行"><i class="fa fa-check"></i><b>8.5.2</b> 命令执行</a></li>
</ul></li>
<li class="chapter" data-level="8.6" data-path="py.html"><a href="py.html#数据结构-1"><i class="fa fa-check"></i><b>8.6</b> 数据结构</a>
<ul>
<li class="chapter" data-level="8.6.1" data-path="py.html"><a href="py.html#列表-1"><i class="fa fa-check"></i><b>8.6.1</b> 列表</a></li>
<li class="chapter" data-level="8.6.2" data-path="py.html"><a href="py.html#元组"><i class="fa fa-check"></i><b>8.6.2</b> 元组</a></li>
<li class="chapter" data-level="8.6.3" data-path="py.html"><a href="py.html#字典"><i class="fa fa-check"></i><b>8.6.3</b> 字典</a></li>
<li class="chapter" data-level="8.6.4" data-path="py.html"><a href="py.html#数据结构之间的转化-1"><i class="fa fa-check"></i><b>8.6.4</b> 数据结构之间的转化</a></li>
</ul></li>
<li class="chapter" data-level="8.7" data-path="py.html"><a href="py.html#流程控制-1"><i class="fa fa-check"></i><b>8.7</b> 流程控制</a>
<ul>
<li class="chapter" data-level="8.7.1" data-path="py.html"><a href="py.html#条件判断-1"><i class="fa fa-check"></i><b>8.7.1</b> 条件判断</a></li>
<li class="chapter" data-level="8.7.2" data-path="py.html"><a href="py.html#循环-1"><i class="fa fa-check"></i><b>8.7.2</b> 循环</a></li>
</ul></li>
<li class="chapter" data-level="8.8" data-path="py.html"><a href="py.html#函数与模块"><i class="fa fa-check"></i><b>8.8</b> 函数与模块</a>
<ul>
<li class="chapter" data-level="8.8.1" data-path="py.html"><a href="py.html#批量调用"><i class="fa fa-check"></i><b>8.8.1</b> 批量调用</a></li>
<li class="chapter" data-level="8.8.2" data-path="py.html"><a href="py.html#无名函数"><i class="fa fa-check"></i><b>8.8.2</b> 无名函数</a></li>
<li class="chapter" data-level="8.8.3" data-path="py.html"><a href="py.html#函数文档"><i class="fa fa-check"></i><b>8.8.3</b> 函数文档</a></li>
<li class="chapter" data-level="8.8.4" data-path="py.html"><a href="py.html#模块"><i class="fa fa-check"></i><b>8.8.4</b> 模块</a></li>
</ul></li>
<li class="chapter" data-level="8.9" data-path="py.html"><a href="py.html#数据读写与文件操作"><i class="fa fa-check"></i><b>8.9</b> 数据读写与文件操作</a>
<ul>
<li class="chapter" data-level="8.9.1" data-path="py.html"><a href="py.html#读入文件"><i class="fa fa-check"></i><b>8.9.1</b> 读入文件</a></li>
<li class="chapter" data-level="8.9.2" data-path="py.html"><a href="py.html#写出文件"><i class="fa fa-check"></i><b>8.9.2</b> 写出文件</a></li>
<li class="chapter" data-level="8.9.3" data-path="py.html"><a href="py.html#with关键字"><i class="fa fa-check"></i><b>8.9.3</b> with关键字</a></li>
</ul></li>
<li class="chapter" data-level="8.10" data-path="py.html"><a href="py.html#os模块"><i class="fa fa-check"></i><b>8.10</b> os模块</a></li>
<li class="chapter" data-level="8.11" data-path="py.html"><a href="py.html#案例获取高德地图地址信息"><i class="fa fa-check"></i><b>8.11</b> 案例:获取高德地图地址信息</a></li>
<li class="chapter" data-level="8.12" data-path="py.html"><a href="py.html#面向对象单独成一章"><i class="fa fa-check"></i><b>8.12</b> 面向对象单独成一章</a></li>
</ul></li>
<li class="chapter" data-level="9" data-path="regexp.html"><a href="regexp.html"><i class="fa fa-check"></i><b>9</b> 正则表达式</a>
<ul>
<li class="chapter" data-level="9.1" data-path="regexp.html"><a href="regexp.html#语法要素"><i class="fa fa-check"></i><b>9.1</b> 语法要素</a>
<ul>
<li class="chapter" data-level="9.1.1" data-path="regexp.html"><a href="regexp.html#元字符"><i class="fa fa-check"></i><b>9.1.1</b> 元字符</a></li>
<li class="chapter" data-level="9.1.2" data-path="regexp.html"><a href="regexp.html#重复"><i class="fa fa-check"></i><b>9.1.2</b> 重复</a></li>
<li class="chapter" data-level="9.1.3" data-path="regexp.html"><a href="regexp.html#常用字符集"><i class="fa fa-check"></i><b>9.1.3</b> 常用字符集</a></li>
<li class="chapter" data-level="9.1.4" data-path="regexp.html"><a href="regexp.html#分组"><i class="fa fa-check"></i><b>9.1.4</b> 分组</a></li>
<li class="chapter" data-level="9.1.5" data-path="regexp.html"><a href="regexp.html#非捕获组与断言"><i class="fa fa-check"></i><b>9.1.5</b> 非捕获组与断言</a></li>
</ul></li>
<li class="chapter" data-level="9.2" data-path="regexp.html"><a href="regexp.html#grep命令"><i class="fa fa-check"></i><b>9.2</b> grep命令</a></li>
<li class="chapter" data-level="9.3" data-path="regexp.html"><a href="regexp.html#sed命令"><i class="fa fa-check"></i><b>9.3</b> sed命令</a>
<ul>
<li class="chapter" data-level="9.3.1" data-path="regexp.html"><a href="regexp.html#应用情景"><i class="fa fa-check"></i><b>9.3.1</b> 应用情景</a></li>
<li class="chapter" data-level="9.3.2" data-path="regexp.html"><a href="regexp.html#文本替换"><i class="fa fa-check"></i><b>9.3.2</b> 文本替换</a></li>
<li class="chapter" data-level="9.3.3" data-path="regexp.html"><a href="regexp.html#定位行"><i class="fa fa-check"></i><b>9.3.3</b> 定位行</a></li>
<li class="chapter" data-level="9.3.4" data-path="regexp.html"><a href="regexp.html#替代"><i class="fa fa-check"></i><b>9.3.4</b> 替代</a></li>
</ul></li>
<li class="chapter" data-level="9.4" data-path="regexp.html"><a href="regexp.html#awk命令"><i class="fa fa-check"></i><b>9.4</b> awk命令</a>
<ul>
<li class="chapter" data-level="9.4.1" data-path="regexp.html"><a href="regexp.html#入门"><i class="fa fa-check"></i><b>9.4.1</b> 入门</a></li>
</ul></li>
<li class="chapter" data-level="9.5" data-path="regexp.html"><a href="regexp.html#r语言stringr包"><i class="fa fa-check"></i><b>9.5</b> R语言stringr包</a>
<ul>
<li class="chapter" data-level="9.5.1" data-path="regexp.html"><a href="regexp.html#stringr包"><i class="fa fa-check"></i><b>9.5.1</b> stringr包</a></li>
<li class="chapter" data-level="9.5.2" data-path="regexp.html"><a href="regexp.html#应用案例wos数据分析"><i class="fa fa-check"></i><b>9.5.2</b> 应用案例:wos数据分析</a></li>
<li class="chapter" data-level="9.5.3" data-path="regexp.html"><a href="regexp.html#应用案例数据合并与校对"><i class="fa fa-check"></i><b>9.5.3</b> 应用案例:数据合并与校对</a></li>
</ul></li>
<li class="chapter" data-level="9.6" data-path="regexp.html"><a href="regexp.html#python的re模块"><i class="fa fa-check"></i><b>9.6</b> Python的re模块</a>
<ul>
<li class="chapter" data-level="9.6.1" data-path="regexp.html"><a href="regexp.html#原生字符串"><i class="fa fa-check"></i><b>9.6.1</b> 原生字符串</a></li>
<li class="chapter" data-level="9.6.2" data-path="regexp.html"><a href="regexp.html#编译"><i class="fa fa-check"></i><b>9.6.2</b> 编译</a></li>
<li class="chapter" data-level="9.6.3" data-path="regexp.html"><a href="regexp.html#匹配-1"><i class="fa fa-check"></i><b>9.6.3</b> 匹配</a></li>
<li class="chapter" data-level="9.6.4" data-path="regexp.html"><a href="regexp.html#分割"><i class="fa fa-check"></i><b>9.6.4</b> 分割</a></li>
<li class="chapter" data-level="9.6.5" data-path="regexp.html"><a href="regexp.html#替换"><i class="fa fa-check"></i><b>9.6.5</b> 替换</a></li>
<li class="chapter" data-level="9.6.6" data-path="regexp.html"><a href="regexp.html#命名组"><i class="fa fa-check"></i><b>9.6.6</b> 命名组</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="10" data-path="cml.html"><a href="cml.html"><i class="fa fa-check"></i><b>10</b> 命令行</a>
<ul>
<li class="chapter" data-level="10.1" data-path="cml.html"><a href="cml.html#命令的基本概念"><i class="fa fa-check"></i><b>10.1</b> 命令的基本概念</a>
<ul>
<li class="chapter" data-level="10.1.1" data-path="cml.html"><a href="cml.html#常用命令"><i class="fa fa-check"></i><b>10.1.1</b> 常用命令</a></li>
<li class="chapter" data-level="10.1.2" data-path="cml.html"><a href="cml.html#标准输入与输出"><i class="fa fa-check"></i><b>10.1.2</b> 标准输入与输出</a></li>
<li class="chapter" data-level="10.1.3" data-path="cml.html"><a href="cml.html#管道与进程管理"><i class="fa fa-check"></i><b>10.1.3</b> 管道与进程管理</a></li>
<li class="chapter" data-level="10.1.4" data-path="cml.html"><a href="cml.html#别名"><i class="fa fa-check"></i><b>10.1.4</b> 别名</a></li>
<li class="chapter" data-level="10.1.5" data-path="cml.html"><a href="cml.html#脚本"><i class="fa fa-check"></i><b>10.1.5</b> 脚本</a></li>
<li class="chapter" data-level="10.1.6" data-path="cml.html"><a href="cml.html#传参"><i class="fa fa-check"></i><b>10.1.6</b> 传参</a></li>
</ul></li>
<li class="chapter" data-level="10.2" data-path="cml.html"><a href="cml.html#变量与数据结构"><i class="fa fa-check"></i><b>10.2</b> 变量与数据结构</a>
<ul>
<li class="chapter" data-level="10.2.1" data-path="cml.html"><a href="cml.html#数组"><i class="fa fa-check"></i><b>10.2.1</b> 数组</a></li>
<li class="chapter" data-level="10.2.2" data-path="cml.html"><a href="cml.html#字典-1"><i class="fa fa-check"></i><b>10.2.2</b> 字典</a></li>
</ul></li>
<li class="chapter" data-level="10.3" data-path="cml.html"><a href="cml.html#运算-1"><i class="fa fa-check"></i><b>10.3</b> 运算</a></li>
<li class="chapter" data-level="10.4" data-path="cml.html"><a href="cml.html#控制流程"><i class="fa fa-check"></i><b>10.4</b> 控制流程</a>
<ul>
<li class="chapter" data-level="10.4.1" data-path="cml.html"><a href="cml.html#选择结构"><i class="fa fa-check"></i><b>10.4.1</b> 选择结构</a></li>
<li class="chapter" data-level="10.4.2" data-path="cml.html"><a href="cml.html#循环-2"><i class="fa fa-check"></i><b>10.4.2</b> 循环</a></li>
</ul></li>
<li class="chapter" data-level="10.5" data-path="cml.html"><a href="cml.html#函数"><i class="fa fa-check"></i><b>10.5</b> 函数</a></li>
<li class="chapter" data-level="10.6" data-path="cml.html"><a href="cml.html#bash内建正则表达式"><i class="fa fa-check"></i><b>10.6</b> bash内建正则表达式</a></li>
<li class="chapter" data-level="10.7" data-path="cml.html"><a href="cml.html#应用案例"><i class="fa fa-check"></i><b>10.7</b> 应用案例</a></li>
<li class="chapter" data-level="10.8" data-path="cml.html"><a href="cml.html#通配符"><i class="fa fa-check"></i><b>10.8</b> 通配符</a></li>
<li class="chapter" data-level="10.9" data-path="cml.html"><a href="cml.html#sed"><i class="fa fa-check"></i><b>10.9</b> sed</a></li>
<li class="chapter" data-level="10.10" data-path="cml.html"><a href="cml.html#awk"><i class="fa fa-check"></i><b>10.10</b> awk</a></li>
<li class="chapter" data-level="10.11" data-path="cml.html"><a href="cml.html#正则表达式"><i class="fa fa-check"></i><b>10.11</b> 正则表达式</a></li>
<li class="chapter" data-level="10.12" data-path="cml.html"><a href="cml.html#r的命令行选项"><i class="fa fa-check"></i><b>10.12</b> R的命令行选项</a>
<ul>
<li class="chapter" data-level="10.12.1" data-path="cml.html"><a href="cml.html#linuxunix-shebang"><i class="fa fa-check"></i><b>10.12.1</b> Linux/Unix Shebang</a></li>
<li class="chapter" data-level="10.12.2" data-path="cml.html"><a href="cml.html#argparse包实例"><i class="fa fa-check"></i><b>10.12.2</b> argparse包实例</a></li>
</ul></li>
<li class="chapter" data-level="10.13" data-path="cml.html"><a href="cml.html#关于命令行与ide"><i class="fa fa-check"></i><b>10.13</b> 关于命令行与IDE</a></li>
</ul></li>
<li class="chapter" data-level="11" data-path="web.html"><a href="web.html"><i class="fa fa-check"></i><b>11</b> 网络数据采集</a>
<ul>
<li class="chapter" data-level="11.1" data-path="web.html"><a href="web.html#网络数据格式"><i class="fa fa-check"></i><b>11.1</b> 网络数据格式</a>
<ul>
<li class="chapter" data-level="11.1.1" data-path="web.html"><a href="web.html#csv"><i class="fa fa-check"></i><b>11.1.1</b> CSV</a></li>
<li class="chapter" data-level="11.1.2" data-path="web.html"><a href="web.html#xml-1"><i class="fa fa-check"></i><b>11.1.2</b> XML</a></li>
<li class="chapter" data-level="11.1.3" data-path="web.html"><a href="web.html#json-1"><i class="fa fa-check"></i><b>11.1.3</b> JSON</a></li>
</ul></li>
<li class="chapter" data-level="11.2" data-path="web.html"><a href="web.html#html"><i class="fa fa-check"></i><b>11.2</b> HTML</a>
<ul>
<li class="chapter" data-level="11.2.1" data-path="web.html"><a href="web.html#html的基本语法"><i class="fa fa-check"></i><b>11.2.1</b> HTML的基本语法</a></li>
<li class="chapter" data-level="11.2.2" data-path="web.html"><a href="web.html#常见html标签"><i class="fa fa-check"></i><b>11.2.2</b> 常见HTML标签</a></li>
<li class="chapter" data-level="11.2.3" data-path="web.html"><a href="web.html#dom树形数据结构"><i class="fa fa-check"></i><b>11.2.3</b> DOM树形数据结构</a></li>
</ul></li>
<li class="chapter" data-level="11.3" data-path="web.html"><a href="web.html#css"><i class="fa fa-check"></i><b>11.3</b> CSS</a>
<ul>
<li class="chapter" data-level="11.3.1" data-path="web.html"><a href="web.html#css的基本语法"><i class="fa fa-check"></i><b>11.3.1</b> CSS的基本语法</a></li>
<li class="chapter" data-level="11.3.2" data-path="web.html"><a href="web.html#id选择器"><i class="fa fa-check"></i><b>11.3.2</b> id选择器</a></li>
<li class="chapter" data-level="11.3.3" data-path="web.html"><a href="web.html#类选择器"><i class="fa fa-check"></i><b>11.3.3</b> 类选择器</a></li>
</ul></li>
<li class="chapter" data-level="11.4" data-path="web.html"><a href="web.html#javascript"><i class="fa fa-check"></i><b>11.4</b> JavaScript</a>
<ul>
<li class="chapter" data-level="11.4.1" data-path="web.html"><a href="web.html#javascript案例"><i class="fa fa-check"></i><b>11.4.1</b> JavaScript案例</a></li>
<li class="chapter" data-level="11.4.2" data-path="web.html"><a href="web.html#javascript的基本语法"><i class="fa fa-check"></i><b>11.4.2</b> JavaScript的基本语法</a></li>
<li class="chapter" data-level="11.4.3" data-path="web.html"><a href="web.html#ajax"><i class="fa fa-check"></i><b>11.4.3</b> AJAX</a></li>
</ul></li>
<li class="chapter" data-level="11.5" data-path="web.html"><a href="web.html#开发者工具"><i class="fa fa-check"></i><b>11.5</b> 开发者工具</a>
<ul>
<li class="chapter" data-level="11.5.1" data-path="web.html"><a href="web.html#打开开发者工具"><i class="fa fa-check"></i><b>11.5.1</b> 打开开发者工具</a></li>
<li class="chapter" data-level="11.5.2" data-path="web.html"><a href="web.html#查看器与样式"><i class="fa fa-check"></i><b>11.5.2</b> 查看器与样式</a></li>
<li class="chapter" data-level="11.5.3" data-path="web.html"><a href="web.html#其他功能"><i class="fa fa-check"></i><b>11.5.3</b> 其他功能</a></li>
</ul></li>
<li class="chapter" data-level="11.6" data-path="web.html"><a href="web.html#xpath"><i class="fa fa-check"></i><b>11.6</b> Xpath</a>
<ul>
<li class="chapter" data-level="11.6.1" data-path="web.html"><a href="web.html#基本查询"><i class="fa fa-check"></i><b>11.6.1</b> 基本查询</a></li>
</ul></li>
<li class="chapter" data-level="11.7" data-path="web.html"><a href="web.html#http"><i class="fa fa-check"></i><b>11.7</b> HTTP</a>
<ul>
<li class="chapter" data-level="11.7.1" data-path="web.html"><a href="web.html#http常见方法"><i class="fa fa-check"></i><b>11.7.1</b> HTTP常见方法</a></li>
</ul></li>
<li class="chapter" data-level="11.8" data-path="web.html"><a href="web.html#静态爬虫"><i class="fa fa-check"></i><b>11.8</b> 静态爬虫</a></li>
<li class="chapter" data-level="11.9" data-path="web.html"><a href="web.html#使用rselenium的动态爬虫"><i class="fa fa-check"></i><b>11.9</b> 使用RSelenium的动态爬虫</a>
<ul>
<li class="chapter" data-level="11.9.1" data-path="web.html"><a href="web.html#rselenium简介与安装"><i class="fa fa-check"></i><b>11.9.1</b> RSelenium简介与安装</a></li>
<li class="chapter" data-level="11.9.2" data-path="web.html"><a href="web.html#安装docker"><i class="fa fa-check"></i><b>11.9.2</b> 安装Docker</a></li>
<li class="chapter" data-level="11.9.3" data-path="web.html"><a href="web.html#rselenum语法"><i class="fa fa-check"></i><b>11.9.3</b> RSelenum语法</a></li>
<li class="chapter" data-level="11.9.4" data-path="web.html"><a href="web.html#案例1在链家搜索并获取相关信息"><i class="fa fa-check"></i><b>11.9.4</b> 案例1:在链家搜索并获取相关信息</a></li>
<li class="chapter" data-level="11.9.5" data-path="web.html"><a href="web.html#案例2登录豆瓣"><i class="fa fa-check"></i><b>11.9.5</b> 案例2:登录豆瓣</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="12" data-path="geo.html"><a href="geo.html"><i class="fa fa-check"></i><b>12</b> 地理计算</a>
<ul>
<li class="chapter" data-level="12.1" data-path="geo.html"><a href="geo.html#r中地理计算"><i class="fa fa-check"></i><b>12.1</b> R中地理计算</a></li>
<li class="chapter" data-level="12.2" data-path="geo.html"><a href="geo.html#地理数据结构"><i class="fa fa-check"></i><b>12.2</b> 地理数据结构</a>
<ul>
<li class="chapter" data-level="12.2.1" data-path="geo.html"><a href="geo.html#向量vector"><i class="fa fa-check"></i><b>12.2.1</b> 向量(Vector)</a></li>
<li class="chapter" data-level="12.2.2" data-path="geo.html"><a href="geo.html#栅格raster"><i class="fa fa-check"></i><b>12.2.2</b> 栅格(Raster)</a></li>
<li class="chapter" data-level="12.2.3" data-path="geo.html"><a href="geo.html#坐标系coordinate-reference-system"><i class="fa fa-check"></i><b>12.2.3</b> 坐标系(coordinate reference system)</a></li>
</ul></li>
<li class="chapter" data-level="12.3" data-path="geo.html"><a href="geo.html#地理数据操纵"><i class="fa fa-check"></i><b>12.3</b> 地理数据操纵</a></li>
<li class="chapter" data-level="12.4" data-path="geo.html"><a href="geo.html#地理数据可视化"><i class="fa fa-check"></i><b>12.4</b> 地理数据可视化</a></li>
<li class="chapter" data-level="12.5" data-path="geo.html"><a href="geo.html#地理数据运算"><i class="fa fa-check"></i><b>12.5</b> 地理数据运算</a>
<ul>
<li class="chapter" data-level="12.5.1" data-path="geo.html"><a href="geo.html#取子集"><i class="fa fa-check"></i><b>12.5.1</b> 取子集</a></li>
</ul></li>
<li class="chapter" data-level="12.6" data-path="geo.html"><a href="geo.html#地理数据读写"><i class="fa fa-check"></i><b>12.6</b> 地理数据读写</a></li>
<li class="chapter" data-level="12.7" data-path="geo.html"><a href="geo.html#地理数据计算"><i class="fa fa-check"></i><b>12.7</b> 地理数据计算</a></li>
</ul></li>
<li class="chapter" data-level="13" data-path="make.html"><a href="make.html"><i class="fa fa-check"></i><b>13</b> GUN Make的数据生产线</a>
<ul>
<li class="chapter" data-level="13.1" data-path="make.html"><a href="make.html#使用make的必要性"><i class="fa fa-check"></i><b>13.1</b> 使用Make的必要性</a></li>
<li class="chapter" data-level="13.2" data-path="make.html"><a href="make.html#数据流水线的构造目标"><i class="fa fa-check"></i><b>13.2</b> 数据流水线的构造目标</a></li>
<li class="chapter" data-level="13.3" data-path="make.html"><a href="make.html#make安装"><i class="fa fa-check"></i><b>13.3</b> Make安装</a></li>
<li class="chapter" data-level="13.4" data-path="make.html"><a href="make.html#快速上手make"><i class="fa fa-check"></i><b>13.4</b> 快速上手make</a></li>
<li class="chapter" data-level="13.5" data-path="make.html"><a href="make.html#make的工作方式"><i class="fa fa-check"></i><b>13.5</b> make的工作方式</a></li>
<li class="chapter" data-level="13.6" data-path="make.html"><a href="make.html#makefile-的高级写法"><i class="fa fa-check"></i><b>13.6</b> Makefile 的高级写法</a>
<ul>
<li class="chapter" data-level="13.6.1" data-path="make.html"><a href="make.html#特殊目标"><i class="fa fa-check"></i><b>13.6.1</b> 特殊目标</a></li>
<li class="chapter" data-level="13.6.2" data-path="make.html"><a href="make.html#使用变量"><i class="fa fa-check"></i><b>13.6.2</b> 使用变量</a></li>
<li class="chapter" data-level="13.6.3" data-path="make.html"><a href="make.html#分支与循环结构"><i class="fa fa-check"></i><b>13.6.3</b> 分支与循环结构</a></li>
<li class="chapter" data-level="13.6.4" data-path="make.html"><a href="make.html#函数-1"><i class="fa fa-check"></i><b>13.6.4</b> 函数</a></li>
</ul></li>
<li class="chapter" data-level="13.7" data-path="make.html"><a href="make.html#make的高级语法"><i class="fa fa-check"></i><b>13.7</b> Make的高级语法</a>
<ul>
<li class="chapter" data-level="13.7.1" data-path="make.html"><a href="make.html#并行计算"><i class="fa fa-check"></i><b>13.7.1</b> 并行计算</a></li>
</ul></li>
<li class="chapter" data-level="13.8" data-path="make.html"><a href="make.html#参考资料"><i class="fa fa-check"></i><b>13.8</b> 参考资料</a></li>
</ul></li>
<li class="chapter" data-level="14" data-path="net.html"><a href="net.html"><i class="fa fa-check"></i><b>14</b> 图数据分析</a></li>
<li class="appendix"><span><b>附录</b></span></li>
<li class="chapter" data-level="A" data-path="sound.html"><a href="sound.html"><i class="fa fa-check"></i><b>A</b> 余音绕梁</a></li>
<li class="chapter" data-level="" data-path="references.html"><a href="references.html"><i class="fa fa-check"></i>参考文献</a></li>
<li class="chapter" data-level="B" data-path="date.html"><a href="date.html"><i class="fa fa-check"></i><b>B</b> R日期时间</a>
<ul>
<li class="chapter" data-level="B.1" data-path="date.html"><a href="date.html#日期-时间数据类型"><i class="fa fa-check"></i><b>B.1</b> 日期-时间数据类型</a></li>
<li class="chapter" data-level="B.2" data-path="date.html"><a href="date.html#lubridate包"><i class="fa fa-check"></i><b>B.2</b> lubridate包</a>
<ul>
<li class="chapter" data-level="B.2.1" data-path="date.html"><a href="date.html#定义日期-时间变量"><i class="fa fa-check"></i><b>B.2.1</b> 定义日期-时间变量</a></li>
</ul></li>
<li class="chapter" data-level="B.3" data-path="date.html"><a href="date.html#从日期-时间中取出元素"><i class="fa fa-check"></i><b>B.3</b> 从日期-时间中取出元素</a></li>
<li class="chapter" data-level="B.4" data-path="date.html"><a href="date.html#日期-时间取整"><i class="fa fa-check"></i><b>B.4</b> 日期-时间取整</a></li>
<li class="chapter" data-level="B.5" data-path="date.html"><a href="date.html#日期-时间的数学运算"><i class="fa fa-check"></i><b>B.5</b> 日期-时间的数学运算</a>
<ul>
<li class="chapter" data-level="B.5.1" data-path="date.html"><a href="date.html#时间长度"><i class="fa fa-check"></i><b>B.5.1</b> 时间长度</a></li>
<li class="chapter" data-level="B.5.2" data-path="date.html"><a href="date.html#时间周期"><i class="fa fa-check"></i><b>B.5.2</b> 时间周期</a></li>
<li class="chapter" data-level="B.5.3" data-path="date.html"><a href="date.html#时间区间"><i class="fa fa-check"></i><b>B.5.3</b> 时间区间</a></li>
</ul></li>
</ul></li>
<li class="divider"></li>
<li><a href="https://bookdown.org" target="blank">本书由 bookdown 强力驱动</a></li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i><a href="./">数据工程讲义:经济学分册</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<section class="normal" id="section-">
<div id="regexp" class="section level1 hasAnchor" number="9">
<h1><span class="header-section-number">第 9 章</span> 正则表达式<a href="regexp.html#regexp" class="anchor-section" aria-label="Anchor link to header"></a></h1>
<p>正则表达式是对字符串类型数据进行匹配判断,提取等操作的一套逻辑公式。可以看做是一整套约定俗成的黑话,对特定符号的约定俗成。当然,正则表达式可以广泛被采纳,是因为其背后有一套完备的公理体系。正则表达式是独立于编程语言之外的一个迷你语法,是自然语言处理的最佳工具。</p>
<p>更重要的是,在数据工程中,所有的数据都是文件,而所有的文件都是字符串。自动化处理字符串可以让我们避免大量的重复劳动,也可以让我们的科研充满乐趣。</p>
<div id="语法要素" class="section level2 hasAnchor" number="9.1">
<h2><span class="header-section-number">9.1</span> 语法要素<a href="regexp.html#语法要素" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p>正则表达式默认所有字符与自己匹配,通过约定一组语法要素来表达人类语言难以精准描述的字符串模式,从而达到更加灵活与精确识别自然语言的目的。</p>
<div id="元字符" class="section level3 hasAnchor" number="9.1.1">
<h3><span class="header-section-number">9.1.1</span> 元字符<a href="regexp.html#元字符" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>大部分字符会简单匹配自身。除此之外,正则表达式约定一类特殊的不匹配自身的元字符(metacharacters),它们表示匹配一些非常规的内容,或者通过重复它们或改变它们的含义来影响正则的其他部分。</p>
<p>元字符含义如下:</p>
<table>
<thead>
<tr class="header">
<th>符号</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code>.</code></td>
<td>代表任意字符</td>
</tr>
<tr class="even">
<td><code>^</code>、<code>$</code></td>
<td>开始与结束</td>
</tr>
<tr class="odd">
<td><code>*</code></td>
<td>重复任意次</td>
</tr>
<tr class="even">
<td><code>+</code></td>
<td>至少重复一次</td>
</tr>
<tr class="odd">
<td><code>?</code></td>
<td>0或1次</td>
</tr>
<tr class="even">
<td><code>()</code></td>
<td>字符组合</td>
</tr>
<tr class="odd">
<td><code>|</code></td>
<td>或</td>
</tr>
<tr class="even">
<td><code>[]</code></td>
<td>字符集合</td>
</tr>
</tbody>
</table>
</div>
<div id="重复" class="section level3 hasAnchor" number="9.1.2">
<h3><span class="header-section-number">9.1.2</span> 重复<a href="regexp.html#重复" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>除去用元字符表达简单重复外,正则表达式还约定了重复m至n(包含)次的表达方式为<code>{m,n}</code>。其中m和n可缺省一个,<code>{m,}</code>表示至少重复m次,而<code>{,n}</code>表示至多重复n次,<code>{m}</code>表示恰好重复m次。</p>
<p>总结如下,</p>
<table>
<thead>
<tr class="header">
<th align="left">符号</th>
<th align="left">含义</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td align="left"><code>{m,n}</code></td>
<td align="left">重复m至n(包含)次</td>
</tr>
<tr class="even">
<td align="left"><code>{m,}</code></td>
<td align="left">至少重复m次</td>
</tr>
<tr class="odd">
<td align="left"><code>{m}</code></td>
<td align="left">重复m次</td>
</tr>
</tbody>
</table>
<p><em>思考下,如何用正则表达式表达至多n次?</em></p>
</div>
<div id="常用字符集" class="section level3 hasAnchor" number="9.1.3">
<h3><span class="header-section-number">9.1.3</span> 常用字符集<a href="regexp.html#常用字符集" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>常用字符集you:</p>
<table>
<thead>
<tr class="header">
<th align="left">符号</th>
<th align="left">含义</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td align="left"><code>[0-9]</code></td>
<td align="left">数字字符集</td>
</tr>
<tr class="even">
<td align="left"><code>[a-zA-Z]</code></td>
<td align="left">英文字符集</td>
</tr>
<tr class="odd">
<td align="left"><code>\<</code>、<code>\></code></td>
<td align="left">单词开始或结束位置的空白符</td>
</tr>
<tr class="even">
<td align="left"><code>\b</code></td>
<td align="left">单词两边的空白字符</td>
</tr>
<tr class="odd">
<td align="left"><code>\B</code></td>
<td align="left">非单词两边的空白字符</td>
</tr>
</tbody>
</table>
<p>除此之外,还约定了一组有特殊含义的字符集合,这些字符集合在使用时需要再嵌套一组<code>[]</code>。</p>
<table>
<colgroup>
<col width="30%" />
<col width="70%" />
</colgroup>
<thead>
<tr class="header">
<th align="left">符号</th>
<th align="left">含义</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td align="left"><code>[:alpha:]</code></td>
<td align="left">字母</td>
</tr>
<tr class="even">
<td align="left"><code>[:digit:]</code></td>
<td align="left">数字</td>
</tr>
<tr class="odd">
<td align="left"><code>[:alnum:]</code></td>
<td align="left">字母或数字;<code>\w</code>与<code>[[:alnum:]]</code>同义,<code>\W</code> 与<code>[^[:alnum:]]</code>同义</td>
</tr>
<tr class="even">
<td align="left"><code>[:graph:]</code></td>
<td align="left">可见字符,不包括空白</td>
</tr>
<tr class="odd">
<td align="left"><code>[:lower:]</code></td>
<td align="left">小写字母</td>
</tr>
<tr class="even">
<td align="left"><code>[:upper:]</code></td>
<td align="left">大写字母</td>
</tr>
<tr class="odd">
<td align="left"><code>[:print:]</code></td>
<td align="left">可见的字符和空白</td>
</tr>
<tr class="even">
<td align="left"><code>[:punct:]</code></td>
<td align="left">标点</td>
</tr>
<tr class="odd">
<td align="left"><code>[:space:]</code></td>
<td align="left">空白符,包括<code>\t</code>,<code>\r</code>,<code>\n</code>;<code>\s</code>与<code>[[:space:]]</code>同义,<code>\S</code>与<code>[^[:space:]]</code> 同义</td>
</tr>
<tr class="even">
<td align="left"><code>[:xdigit:]</code></td>
<td align="left">十六进制数</td>
</tr>
<tr class="odd">
<td align="left"><code>[\u4e00-\u9fa5]</code></td>
<td align="left">中文字符</td>
</tr>
</tbody>
</table>
<p>由于上述特殊字符被占用,需要转义操作来表达特殊字符自身,有三种约定:基础正则表达式、扩展正则表达式与<code>Perl</code>正则表达式。在基础正则表达式中,特殊字符(<code>?+*{[</code>等)是字符本身,需要特殊含义得加上<code>\</code>来表达其正则表达式含义(例如<code>\?</code>表示重复0次或1次,而<code>?</code>表示问号本身)。扩展正则表达式相反,用特殊字符默认表达正则含义,而加上<code>\</code>后表示字符本身。Perl正则表达式则把扩展正则表达式扩展到更大的范围,与<code>Perl5</code>语言正则表达式有同样功能。</p>
<p><strong>练习题</strong></p>
<ol style="list-style-type: decimal">
<li><p>请构造一个正则表达式来表示交大的邮箱地址,要求不能以数字开头,必须包含字母。</p></li>
<li><p>数据表<a href="">qje2014_2023.txt</a>包含了2014-2023年发表在Quarterly Journal of Economics杂志上的所有论文。可以看到,论文的作者与地址信息是以如下的模式表示的<code>[Gopinath, Gita; Stein, Jeremy C.] Harvard Univ, Cambridge, MA 02138 USA; [Gopinath, Gita; Stein, Jeremy C.] NBER, Cambridge, MA 02138 USA</code>,请构造一个正则表达式表述这样的模式。</p></li>
</ol>
</div>
<div id="分组" class="section level3 hasAnchor" number="9.1.4">
<h3><span class="header-section-number">9.1.4</span> 分组<a href="regexp.html#分组" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>正则表达式可以分为不同的小组来解析字符串,这些小组匹配不同组件。分组是用<code>(</code>,<code>)</code>元字符来标记,子组从左到右编号,从1向上编号。组可以嵌套;要确定编号只需计算从左到右的左括号字符。使用<code>\n</code>表示第n组的内容。例如,<code>(\w+)\s\1</code>可用于表示任意两组重复的字符组,<code>the the</code>。</p>
</div>
<div id="非捕获组与断言" class="section level3 hasAnchor" number="9.1.5">
<h3><span class="header-section-number">9.1.5</span> 非捕获组与断言<a href="regexp.html#非捕获组与断言" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>精心设计的正则可以使用许多组,既可以捕获感兴趣的子串,也可以对正则本身进行分组和构建。为避免混淆,<code>Perl5</code>中使用 <code>(?...)</code>作为扩展语法。</p>
<p>如果我们对匹配的内容不感兴趣,可以使用<code>(?:...)</code>表示的非捕获组,<code>...</code>表示被匹配的正则表达式。在修改现有模式时特别有用,可以添加新组而不更改所有其他组的编号方式。</p>
<p>断言(assertion)用于找到的对应的位置,同样不匹配内容,因此也被称为零宽断言(zero-width assertion)。匹配到位置后,可以向后(向右)也可以向前(向左)继续搜索。</p>
<p>断言如下四种:</p>
<table>
<colgroup>
<col width="23%" />
<col width="76%" />
</colgroup>
<thead>
<tr class="header">
<th align="left">符号</th>
<th align="left">含义</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td align="left"><code>(?<=...)</code></td>
<td align="left">肯定型后视断言,匹配成功时向后搜索,<code>(?<=[\u4e00-\u9fa5])\s</code>表示所有中文字符之后的空格</td>
</tr>
<tr class="even">
<td align="left"><code>(?<!...)</code></td>
<td align="left">否定型后视断言,匹配成功时向后搜索,<code>(?<=[\u4e00-\u9fa5])\s</code>表示所有非中文字符之后的空格</td>
</tr>
<tr class="odd">
<td align="left"><code>(?=...)</code></td>
<td align="left">肯定型前视断言,匹配成功时向前搜索,<code>\s(?=[\u4e00-\u9fa5])</code>表示所有中文字符之前的空格</td>
</tr>
<tr class="even">
<td align="left"><code>(?!...)</code></td>
<td align="left">否定型前视断言,匹配成功时向前搜索,<code>\s(?![\u4e00-\u9fa5])</code>表示所有非中文字符之前的空格</td>
</tr>
</tbody>
</table>
<p>断言可以让我们的正则表达式非常灵活,避免了很多复杂的情形。例如,如果我们要求,在注册用户的时候,需要验证用户的密码必须包含英文大小写字母以及数字,可以使用下面的正则表达式。</p>
<p><code>(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*</code></p>
<p>其中,<code>(?=.*[a-z])</code>是一个肯定型向前断言,用于判断在任意字符(包括没有字符的情况)后面是否出现了小写英文字母。这个断言不匹配具体内容,所以后面可以继续使用其他断言。</p>
<p>设想一下如果没有断言,这里的情况会有多么复杂。</p>
</div>
</div>
<div id="grep命令" class="section level2 hasAnchor" number="9.2">
<h2><span class="header-section-number">9.2</span> grep命令<a href="regexp.html#grep命令" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p><code>grep</code>命令的基本功能是,检验输入的第一行是否与正则表达式匹配,若是则输出该行。<code>grep</code>命令使用基本正则表达式,<code>grep -E</code>可以指定使用扩展正则表达式。由于,该命令使用频率很高,因此直接被封装为<code>egrep</code>命令。<code>-n</code>参数可以输出匹配结果所在行数,<code>-v</code>参数表示返回不包括后续正则表达式的行。</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="regexp.html#cb1-1" tabindex="-1"></a><span class="fu">seq</span> 10000 <span class="kw">|</span> <span class="fu">egrep</span> <span class="at">-n</span> <span class="st">'^23{2,4}$'</span></span></code></pre></div>
<pre><code>## 233:233
## 2333:2333</code></pre>
<p>在实践中,<code>egrep</code>经常会配合其他命令使用,例如找出当前进程中的python进程。</p>
<div class="sourceCode" id="cb3"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="regexp.html#cb3-1" tabindex="-1"></a><span class="fu">seq</span> 10000 <span class="kw">|</span> <span class="fu">egrep</span> <span class="at">-n</span> <span class="st">'^23{2,4}$'</span></span></code></pre></div>
<pre><code>## 233:233
## 2333:2333</code></pre>
</div>
<div id="sed命令" class="section level2 hasAnchor" number="9.3">
<h2><span class="header-section-number">9.3</span> sed命令<a href="regexp.html#sed命令" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p><code>sed</code>是流编辑器(stream editor)的简称。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“pattern space”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。<code>sed</code>继承自打印机<code>ed</code>命令,因此保留了很多<code>ed</code>的传统。</p>
<p>在<code>macOS</code>中,<code>GNU sed</code>的命令是<code>gsed</code>,使用时需要注意下,不要搞混。</p>
<div id="应用情景" class="section level3 hasAnchor" number="9.3.1">
<h3><span class="header-section-number">9.3.1</span> 应用情景<a href="regexp.html#应用情景" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p><code>sed</code>适用于以下场景:</p>
<ol style="list-style-type: decimal">
<li><p>一文多改,一个文件上投入多个改动;</p></li>
<li><p>一脚多文,一个脚本用在多个文件;</p></li>
</ol>
<p>3.高级<code>grep</code>,在查找关键词之前,先对待找的文本进行清洗;</p>
<p>4.管道过滤, 直接对着标准输入过滤,给到标准输出。</p>
</div>
<div id="文本替换" class="section level3 hasAnchor" number="9.3.2">
<h3><span class="header-section-number">9.3.2</span> 文本替换<a href="regexp.html#文本替换" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p><code>sed</code>常用的操作是替换,可以使用正则表达式</p>
<p>锁定行</p>
<p>其他操作</p>
<p>-r 扩展正则表达式</p>
</div>
<div id="定位行" class="section level3 hasAnchor" number="9.3.3">
<h3><span class="header-section-number">9.3.3</span> 定位行<a href="regexp.html#定位行" class="anchor-section" aria-label="Anchor link to header"></a></h3>
</div>
<div id="替代" class="section level3 hasAnchor" number="9.3.4">
<h3><span class="header-section-number">9.3.4</span> 替代<a href="regexp.html#替代" class="anchor-section" aria-label="Anchor link to header"></a></h3>
</div>
</div>
<div id="awk命令" class="section level2 hasAnchor" number="9.4">
<h2><span class="header-section-number">9.4</span> awk命令<a href="regexp.html#awk命令" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p><code>awk</code>是模式匹配语言,更贴近人类的思维习惯。在<code>awk</code>看来,每个文本文件都是一个数据仓库,在文本处理的同时集成算术运算。其工作方式是先用<code>awk</code>描述数据中的规律,然后再根据这个规律来提取信息。与<code>sed</code>一样,单行的<code>awk</code>程序可以直接从命令行输入,对于多行的<code>awk</code>程序可以写成脚本。</p>
<div id="入门" class="section level3 hasAnchor" number="9.4.1">
<h3><span class="header-section-number">9.4.1</span> 入门<a href="regexp.html#入门" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>从<code>grep</code>到<code>sed</code>再到<code>awk</code>的复杂度和能力是逐步提升的,我们最佳工具原则推荐大家同一个人任务,优先选择简单的工具。</p>
<p>必要性强不强的问题</p>
</div>
</div>
<div id="r语言stringr包" class="section level2 hasAnchor" number="9.5">
<h2><span class="header-section-number">9.5</span> R语言stringr包<a href="regexp.html#r语言stringr包" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p>R语言中的正则表达式转义符使用两个<code>\</code>,这一点值得特别注意。<code>tidyverse</code>宇宙为我们提供了<code>stringr</code>包来对处理字符数据,其常用函数列举如下:</p>
<div id="stringr包" class="section level3 hasAnchor" number="9.5.1">
<h3><span class="header-section-number">9.5.1</span> stringr包<a href="regexp.html#stringr包" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<table>
<thead>
<tr class="header">
<th align="left">字符</th>
<th align="left">含义</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td align="left"><code>str_sub</code></td>
<td align="left">提取指定位置的字符</td>
</tr>
<tr class="even">
<td align="left"><code>str_dup</code></td>
<td align="left">重复字符串</td>
</tr>
<tr class="odd">
<td align="left"><code>str_length</code></td>
<td align="left">返回字符的长度</td>
</tr>
<tr class="even">
<td align="left"><code>str_pad</code></td>
<td align="left">填补字符</td>
</tr>
<tr class="odd">
<td align="left"><code>str_trim</code></td>
<td align="left">丢弃填充,如去掉字符前后的空格</td>
</tr>
<tr class="even">
<td align="left"><code>str_c</code></td>
<td align="left">连接字符</td>
</tr>
<tr class="odd">
<td align="left"><code>str_extract</code></td>
<td align="left">提取首个匹配模式的字符</td>
</tr>
<tr class="even">
<td align="left"><code>str_extract_all</code></td>
<td align="left">提取所有匹配模式的字符</td>
</tr>
<tr class="odd">
<td align="left"><code>str_locate</code></td>
<td align="left">返回首个匹配模式的字符的位置</td>
</tr>
<tr class="even">
<td align="left"><code>str_locate_all</code></td>
<td align="left">返回所有匹配模式的字符的位置</td>
</tr>
<tr class="odd">