reykit 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- reykit/__init__.py +41 -0
- reykit/rall.py +33 -0
- reykit/rcomm.py +431 -0
- reykit/rdata.py +395 -0
- reykit/rdll/__init__.py +17 -0
- reykit/rdll/rdll_inject.py +41 -0
- reykit/rdll/rdll_inject_core.py +202 -0
- reykit/remail.py +276 -0
- reykit/rexception.py +339 -0
- reykit/rimage.py +261 -0
- reykit/rlog.py +1061 -0
- reykit/rmonkey.py +341 -0
- reykit/rmultitask.py +871 -0
- reykit/rnumber.py +161 -0
- reykit/ros.py +1917 -0
- reykit/rrandom.py +351 -0
- reykit/rregex.py +293 -0
- reykit/rschedule.py +272 -0
- reykit/rstdout.py +356 -0
- reykit/rsystem.py +1180 -0
- reykit/rtable.py +511 -0
- reykit/rtext.py +458 -0
- reykit/rtime.py +678 -0
- reykit/rtype.py +106 -0
- reykit/rwrap.py +613 -0
- reykit/rzip.py +137 -0
- reykit-1.0.0.dist-info/METADATA +29 -0
- reykit-1.0.0.dist-info/RECORD +30 -0
- reykit-1.0.0.dist-info/WHEEL +5 -0
- reykit-1.0.0.dist-info/top_level.txt +1 -0
reykit/rnumber.py
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
# !/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
|
4
|
+
"""
|
5
|
+
@Time : 2023-04-22 22:32:34
|
6
|
+
@Author : Rey
|
7
|
+
@Contact : reyxbo@163.com
|
8
|
+
@Explain : Number methods.
|
9
|
+
"""
|
10
|
+
|
11
|
+
|
12
|
+
from typing import Any, Union
|
13
|
+
|
14
|
+
from .rexception import throw
|
15
|
+
|
16
|
+
|
17
|
+
__all__ = (
|
18
|
+
'digits',
|
19
|
+
'to_number',
|
20
|
+
'number_ch'
|
21
|
+
)
|
22
|
+
|
23
|
+
|
24
|
+
def digits(number: Union[int, float]) -> tuple[int, int]:
|
25
|
+
"""
|
26
|
+
Judge the number of integer digits and decimal digits.
|
27
|
+
|
28
|
+
Parameters
|
29
|
+
----------
|
30
|
+
number : Number to judge.
|
31
|
+
|
32
|
+
Returns
|
33
|
+
-------
|
34
|
+
Integer digits and decimal digits.
|
35
|
+
"""
|
36
|
+
|
37
|
+
# Handle parameter.
|
38
|
+
number_str = str(number)
|
39
|
+
|
40
|
+
# Get digits.
|
41
|
+
if '.' in number_str:
|
42
|
+
int_str, dec_str = number_str.split('.')
|
43
|
+
int_digits = len(int_str)
|
44
|
+
dec_digits = len(dec_str)
|
45
|
+
else:
|
46
|
+
int_digits = len(number_str)
|
47
|
+
dec_digits = 0
|
48
|
+
|
49
|
+
return int_digits, dec_digits
|
50
|
+
|
51
|
+
|
52
|
+
def to_number(
|
53
|
+
data: Any,
|
54
|
+
raising: bool = True
|
55
|
+
) -> Any:
|
56
|
+
"""
|
57
|
+
Convert data to number.
|
58
|
+
|
59
|
+
Parameters
|
60
|
+
----------
|
61
|
+
data : Data.
|
62
|
+
raising : When parameter `string` value error, whether throw exception, otherwise return original value.
|
63
|
+
|
64
|
+
Returns
|
65
|
+
-------
|
66
|
+
Converted number.
|
67
|
+
"""
|
68
|
+
|
69
|
+
# Convert.
|
70
|
+
try:
|
71
|
+
data = float(data)
|
72
|
+
except (ValueError, TypeError):
|
73
|
+
|
74
|
+
# Throw exception.
|
75
|
+
if raising:
|
76
|
+
throw(ValueError, data)
|
77
|
+
|
78
|
+
else:
|
79
|
+
if data % 1 == 0:
|
80
|
+
data = int(data)
|
81
|
+
|
82
|
+
return data
|
83
|
+
|
84
|
+
|
85
|
+
def number_ch(number: int) -> str:
|
86
|
+
"""
|
87
|
+
Convert number to chinese number.
|
88
|
+
|
89
|
+
Parameters
|
90
|
+
----------
|
91
|
+
number : Number to convert.
|
92
|
+
|
93
|
+
Returns
|
94
|
+
-------
|
95
|
+
Chinese number.
|
96
|
+
"""
|
97
|
+
|
98
|
+
# Import.
|
99
|
+
from .rregex import sub_batch
|
100
|
+
|
101
|
+
# Set parameter.
|
102
|
+
map_digit = {
|
103
|
+
'0': '零',
|
104
|
+
'1': '一',
|
105
|
+
'2': '二',
|
106
|
+
'3': '三',
|
107
|
+
'4': '四',
|
108
|
+
'5': '五',
|
109
|
+
'6': '六',
|
110
|
+
'7': '七',
|
111
|
+
'8': '八',
|
112
|
+
'9': '九',
|
113
|
+
}
|
114
|
+
map_digits = {
|
115
|
+
0: '',
|
116
|
+
1: '十',
|
117
|
+
2: '百',
|
118
|
+
3: '千',
|
119
|
+
4: '万',
|
120
|
+
5: '十',
|
121
|
+
6: '百',
|
122
|
+
7: '千',
|
123
|
+
8: '亿',
|
124
|
+
9: '十',
|
125
|
+
10: '百',
|
126
|
+
11: '千',
|
127
|
+
12: '万',
|
128
|
+
13: '十',
|
129
|
+
14: '百',
|
130
|
+
15: '千',
|
131
|
+
16: '兆'
|
132
|
+
}
|
133
|
+
|
134
|
+
# Handle parameter.
|
135
|
+
number_str = str(number)
|
136
|
+
|
137
|
+
# Replace digit.
|
138
|
+
for digit, digit_ch in map_digit.items():
|
139
|
+
number_str = number_str.replace(digit, digit_ch)
|
140
|
+
|
141
|
+
# Add digits.
|
142
|
+
number_list = []
|
143
|
+
for index, digit_ch in enumerate(number_str[::-1]):
|
144
|
+
digits_ch = map_digits[index]
|
145
|
+
number_list.insert(0, digits_ch)
|
146
|
+
number_list.insert(0, digit_ch)
|
147
|
+
number_str = ''.join(number_list)
|
148
|
+
|
149
|
+
# Delete redundant content.
|
150
|
+
number_str = sub_batch(
|
151
|
+
number_str,
|
152
|
+
('(?<=零)[^万亿兆]', ''),
|
153
|
+
('零+', '零'),
|
154
|
+
('零(?=[万亿兆])', '')
|
155
|
+
)
|
156
|
+
if number_str.startswith('一十'):
|
157
|
+
number_str = number_str[1:]
|
158
|
+
if number_str.endswith('零'):
|
159
|
+
number_str = number_str[:-1]
|
160
|
+
|
161
|
+
return number_str
|