Siri praktikal Python |

Lepaskan: 2023-08-09 15:51:35
ke hadapan
605 orang telah melayarinya


Dalam keluaran ini, saya ingin berkongsi dengan anda artikel pertama "Python Practical Series" : siri utama ini dan pengekstrakan biasa daripada amalan sebenar peminat Soalan akan dikemas kini secara berterusan pada masa hadapan Saya harap ia akan membantu anda Jika anda mempunyai sebarang soalan atau bidang yang memerlukan penambahbaikan, anda boleh menghantar mesej peribadi kepada editor.
Penerangan tugas:
Ambil data fail txt dalam setiap bahasa untuk melukis carta garisan Tangkapan skrin fail data.txt adalah seperti berikut (ia terlalu panjang dan saya akan potong lurus ):
Pada pandangan pertama, ia kelihatan seperti fail format json, tetapi sebenarnya bukan

Siri praktikal Python |

Mari kita ke intinya: Siri praktikal Python |
data

with open('data.txt') as f:
    data = f.read()
Salin selepas log masuk
?️‍? 2. Kerap mengekstrak maklumat dalam kurungan kerinting {}
datas = re.findall('({.*?})',data)
Salin selepas log masuk
Siri praktikal Python |

Siri praktikal Python |

kandungan asas bagi setiap bahasa adalah untuk mengekstrak maklumat tarikh dan maklumat data.


?️‍? 3. Ekstrak nama, beri perhatian kepada melarikan diri (')
Siri praktikal Python |
re.findall('\'(.*)\'',datas[0])[0]
Salin selepas log masuk
perhatian kepada data dan 4 data
re.findall('(\d+(\.\d+)?)',datas[0])
Salin selepas log masuk
Setiap 4 data ialah satu kumpulan, jadi buat gelung dengan
step=4:
for i in range(0,len(datas_tmp),4):
    datas_f.append(float(datas_tmp[i+3][0]))
    dates_f.append(f'{datas_tmp[i][0]}-{datas_tmp[i+1][0]}-{datas_tmp[i+2][0]}')
Salin selepas log masuk
?️ Kod data yang lengkap

?️ Kod lengkap?

# 处理数据
with open('data.txt') as f:
    data = f.read()
datas = re.findall('({.*?})',data)
names = []
dates_result = []
datas_result = []
for idx,dd in enumerate(datas):
    datas_f = []
    dates_f = []
    name = re.findall('\'(.*)\'',dd)[0]
    names.append(name)
    datas_tmp = re.findall('(\d+(\.\d+)?)',dd)
    for i in range(0,len(datas_tmp),4):
        datas_f.append(float(datas_tmp[i+3][0]))
        dates_f.append(f'{datas_tmp[i][0]}-{datas_tmp[i+1][0]}-{datas_tmp[i+2][0]}')
    datas_result.append(datas_f)
    dates_result.append(dates_f)
Salin selepas log masuk

?️‍? 6. 绘图

绘图部分直接用matplotlib的plot循环绘制即可,代码如下:

# 绘图
plt.figure(figsize=(20, 10), dpi=100)
for i in range(len(names)):
    plt.plot(dates_result[i], datas_result[i], label=names[i])
ax = plt.gca()
ax.xaxis.set_major_locator(ticker.MultipleLocator(20))
plt.ylabel("Ratings(%)", fontdict={'size': 16})
plt.title("TIOBE Programming Community Index", fontdict={'size': 20})
plt.legend(loc='best')
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()
Salin selepas log masuk

Siri praktikal Python |


Atas ialah kandungan terperinci Siri praktikal Python |. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:Python当打之年
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!