-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathre_sub_findall.py
145 lines (128 loc) · 3.53 KB
/
re_sub_findall.py
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
import re
# 正则匹配
"""
1.re.sub(pattern, repl, string, count=0, flags=0):
(1)pattern:该参数表示正则中的模式字符串;
(2)repl:该参数表示要替换的字符串(即匹配到pattern后替换为repl),也可以是个函数;
(3)string:该参数表示要被处理(查找替换)的原始字符串;
(4)count:可选参数,表示是要替换的最大次数,而且必须是非负整数,该参数默认为0,即所有的匹配都会被替换;
(5)flags:可选参数,表示编译时用的匹配模式(如忽略大小写、多行模式等),数字形式,默认为0
2.re.findall(pattern, string, flags=0):
"""
table = """
产品名称 净值日期 最新净值(元) 累计净值(元)
合盈1号
6E0501
2021-04-23 1.4216 1.4216
合盈1号
6E0501
2021-04-16 1.3985 1.3985
合盈1号
6E0501
2021-04-09 1.3930 1.3930
合盈1号
6E0501
2021-04-02 1.3977 1.3977
合盈1号
6E0501
2021-03-26 1.3836 1.3836
合盈1号
6E0501
2021-03-19 1.3955 1.3955
合盈1号
6E0501
2021-03-12 1.3968 1.3968
合盈1号
6E0501
2021-03-05 1.4140 1.4140
合盈1号
6E0501
2021-02-26 1.4107 1.4107
合盈1号
6E0501
2021-02-19 1.4220 1.4220
"""
# 需要的格式
"""
[('产品名称', '净值日期', '最新净值(元)', '累计净值(元)'), ('合盈1号', '2021-04-23', '1.4216', '1.4216'), ('合盈1号', '2021-04-16', '1.3985', '1.3985'), ('合盈1号', '2021-04-09', '1.3930', '1.3930'), ('合盈1号', '2021-04-02', '1.3977', '1.3977'), ('合盈1号', '2021-03-26', '1.3836', '1.3836'), ('合盈1号', '2021-03-19', '1.3955', '1.3955'), ('合盈1号', '2021-03-12', '1.3968', '1.3968'), ('合盈1号', '2021-03-05', '1.4140', '1.4140'), ('合盈1号', '2021-02-26', '1.4107', '1.4107'), ('合盈1号', '2021-02-19', '1.4220', '1.4220')]
"""
# 1.第一步去除空行
table = re.sub(r'\n\n','\n', table)
"""
产品名称 净值日期 最新净值(元) 累计净值(元)
合盈1号
6E0501
2021-04-23 1.4216 1.4216
合盈1号
6E0501
2021-04-16 1.3985 1.3985
合盈1号
6E0501
2021-04-09 1.3930 1.3930
合盈1号
6E0501
2021-04-02 1.3977 1.3977
合盈1号
6E0501
2021-03-26 1.3836 1.3836
合盈1号
6E0501
2021-03-19 1.3955 1.3955
合盈1号
6E0501
2021-03-12 1.3968 1.3968
合盈1号
6E0501
2021-03-05 1.4140 1.4140
合盈1号
6E0501
2021-02-26 1.4107 1.4107
合盈1号
6E0501
2021-02-19 1.4220 1.4220
"""
# 2.去除无用字段 6E0501
table = re.sub(r'\n([0-9A-Z]+)', '', table)
"""
产品名称 净值日期 最新净值(元) 累计净值(元)
合盈1号
2021-04-23 1.4216 1.4216
合盈1号
2021-04-16 1.3985 1.3985
合盈1号
2021-04-09 1.3930 1.3930
合盈1号
2021-04-02 1.3977 1.3977
合盈1号
2021-03-26 1.3836 1.3836
合盈1号
2021-03-19 1.3955 1.3955
合盈1号
2021-03-12 1.3968 1.3968
合盈1号
2021-03-05 1.4140 1.4140
合盈1号
2021-02-26 1.4107 1.4107
合盈1号
2021-02-19 1.4220 1.4220
"""
# 3. 合并一行
table = re.sub(r'\n(\s+)'," ", table) # 与以下等价
# table = re.sub(r'\n(\s+)', r'\1', table) # \1 分组的第一个
"""
产品名称 净值日期 最新净值(元) 累计净值(元)
合盈1号 2021-04-23 1.4216 1.4216
合盈1号 2021-04-16 1.3985 1.3985
合盈1号 2021-04-09 1.3930 1.3930
合盈1号 2021-04-02 1.3977 1.3977
合盈1号 2021-03-26 1.3836 1.3836
合盈1号 2021-03-19 1.3955 1.3955
合盈1号 2021-03-12 1.3968 1.3968
合盈1号 2021-03-05 1.4140 1.4140
合盈1号 2021-02-26 1.4107 1.4107
合盈1号 2021-02-19 1.4220 1.4220
"""
# 4. 转换成列表
table = re.findall(r'(\S+)\s+(\S+)\s+(\S+)\s+(\S+)', table)
print(table)
pass