


Gunakan python untuk memproses data teks berlabel dan melakukan pengiraan berangka
Dalam tugas pemprosesan data, kita sering perlu mengekstrak dan mengira data dari fail teks yang tidak berstruktur atau separa berstruktur. Sebagai contoh, fail log mungkin mengandungi tag untuk peristiwa tertentu dan maklumat berangka yang berkaitan. Tutorial ini akan mengambil senario biasa sebagai contoh: bagaimana untuk menghuraikan baris data mengikut baris dari fail .txt yang mengandungi format "Tarikh/Tag: Nilai 1, Nilai 2, Nilai 3, dan jumlah nilai di bawah setiap tag.
Konsep teras dan langkah pelaksanaan
Kunci untuk mengendalikan data teks tersebut adalah membaca fail dengan betul, segmen rentetan dengan tepat, menukar nilai teks ke dalam jenis angka yang boleh dihitung, dan jumlahnya.
1. Bacaan fail yang selamat dan cekap: Gunakan dengan terbuka ()
Apabila memproses fail, adalah penting untuk memastikan bahawa fail ditutup dengan betul selepas operasi selesai, walaupun ralat berlaku. Pernyataan Python dengan menyediakan cara yang ringkas dan selamat untuk menguruskan sumber fail, yang secara automatik mengendalikan pembukaan dan penutupan fail secara automatik.
dengan terbuka ('tb1.txt', 'r', encoding = 'utf-8') sebagai fail: # Operasi fail akan diluluskan di sini
Di sini, 'tb1.txt' adalah nama fail yang akan dibaca, dan 'r' bermaksud membuka fail dalam mod baca sahaja. Pengekodan = 'UTF-8' adalah amalan yang baik apabila mengendalikan fail teks, terutamanya apabila berurusan dengan fail yang mengandungi aksara bukan ASCII. sebagai fail memberikan objek fail ke fail pembolehubah.
2. Menganalisis garis data teks demi baris
Objek fail itu boleh dimakan, yang bermaksud kita boleh menggunakannya secara langsung di dalam gelung untuk membaca baris kandungan fail mengikut baris tanpa secara manual memanggil ReadLine () atau readlines ().
dengan terbuka ('tb1.txt', 'r', encoding = 'utf-8') sebagai fail: untuk talian dalam fail: #Every Time Pembolehubah baris akan mengandungi garis dalam fail# Keluarkan garis pecah dan kemungkinan kosong di hujung baris garis = line.strip () jika tidak garis: # langkau garis kosong teruskan # Pemprosesan berikutnya ...
Kaedah ini mudah dan cekap, terutamanya sesuai untuk mengendalikan fail besar. line.strip () digunakan untuk menghapuskan aksara ruang putih pada permulaan dan akhir garis, termasuk garis baru, yang penting untuk segmentasi rentetan berikutnya.
3. Segmentasi String: Ekstrak Label dan Nilai
Menurut fail contoh Isnin: 12, 34, -90, setiap baris data terdiri daripada label dan satu siri nilai angka, dipisahkan oleh kolon:. Nilai dipisahkan oleh koma. Kami memerlukan dua operasi segmentasi untuk mengekstrak maklumat yang diperlukan.
Pertama, gunakan str.split (':') untuk memecah garisan menjadi dua bahagian: label dan rentetan yang mengandungi nilai angka. Untuk mengelakkan masalah apabila label itu sendiri mengandungi kolon, disyorkan untuk menggunakan maxSplit = 1.
label, fields_str = line.split (':', 1) label = label.strip () # keluarkan kosong di kedua -dua hujung label
Label akan mendapat rentetan seperti "Isnin", dan fields_str akan mendapat "12,34, -90" (perhatikan bahawa mungkin ada ruang).
Seterusnya, gunakan str.split (',') untuk fields_str untuk mendapatkan senarai rentetan angka yang berasingan.
value_str_list = fields_str.split (',')
Ini akan mendapat senarai seperti ['12', '34', '-90'].
4. Penukaran dan Pengumpulan Pengumpulan Berangka
Setiap elemen yang diambil dari nilai_str_list adalah jenis rentetan. Sebelum pengiraan matematik, mereka mesti ditukar kepada jenis angka (seperti integer int atau float).
current_sum = 0 untuk nilai_str dalam nilai_str_list: # Keluarkan aksara ruang putih yang mungkin dan tukarnya ke integer numeric_value = int (value_str.strip ()) current_sum = Numeric_value
Kaedah str.strip () berfungsi semula di sini untuk menghapuskan aksara ruang putih di kedua -dua hujung rentetan, memastikan kejayaan penukaran Int ().
5. Output Hasil
Selepas menjumlahkan nilai setiap baris, kita boleh mencetak label dan jumlah yang sepadan untuk melihat hasilnya.
cetak (f "{label}: {current_sum}")
Output diformat digunakan di sini, yang ringkas dan jelas.
Contoh kod lengkap
Mengintegrasikan langkah -langkah di atas dan tambahkan mekanisme pengendalian ralat untuk membina fungsi yang mantap untuk mengendalikan fail:
DEF mengira_SUMS_FROM_FILE (filePath): "" " Baca data dari fail yang ditentukan, huruskan setiap baris dan hitung jumlah nilai berangka. Args: FilePath (STR): Laluan fail teks yang belum selesai. "" " Cuba: dengan buka (filePath, 'r', encoding = 'UTF-8') sebagai fail: cetak (f "pemprosesan fail: {filePath} \ n ---") Untuk line_num, baris dalam penghitungan (fail, 1): line = line.strip () # Keluarkan rehat dan kekosongan talian di hujung baris jika tidak garis: # langkau garis kosong terus Cuba: # 1. Pecahkan label dan bahagian berangka# gunakan maxSplit = 1 untuk mengelakkan masalah yang mengandungi kolon dalam label label, fields_str = line.split (':', 1) label = label.strip () # Keluarkan tempat kosong di kedua -dua hujung label # 2. Pecahkan rentetan angka dan tukarnya ke dalam nilai integer_str_list = fields_str.split (',') current_sum = 0 untuk nilai_str dalam nilai_str_list: numeric_value = int (value_str.strip ()) # Keluarkan tempat kosong dan tukar current_sum = numeric_value # 3. Output Result Print (f "{label}: {current_sum}") Kecuali ValueError sebagai E: cetak (f "ralat: nilai dalam data dalam baris {line_num} tidak boleh ditukar. Kandungan: '{line}' Mesej ralat: {e}") Kecuali indeksror: cetak (f "ralat: pemisah kolon atau bahagian angka hilang pada baris {line_num}. Kandungan: '{line}'") Kecuali pengecualian sebagai e: cetak (f "ralat: ralat yang tidak diketahui berlaku pada baris {line_num}. Kandungan: '{line}' Mesej ralat: {e}") Kecuali FileNotFoundError: cetak (f "ralat: fail '{filePath}' tidak dijumpai. Sila periksa laluan fail.") Kecuali pengecualian sebagai e: cetak (f "ralat tidak diketahui berlaku semasa memproses fail: {e}") # Contoh Gunakan: # Pertama, pastikan untuk membuat fail bernama 'tb1.txt' dalam direktori yang sama di mana kod sedang berjalan. # dan isi berikut untuk ujian: "" " Isnin: 12,34, -90 Sabtu: 32, -23,20 Selasa: 1,2,3,4,5 Rabu: -10,20 InvalidlineWithoutColon Satu lagi hari: 10, ABC, 20 "" " # Anda boleh membuat fail ujian melalui coretan kod berikut: # dengan terbuka ('tb1.txt', 'w', encoding = 'utf-8') sebagai f: # f.write ("Isnin: 12,34, -90 \ n") # f.write ("Sabtu: 32, -23,20 \ n") # f.write ("Selasa: 1,2,3,4,5 \ n") # f.write ("Rabu: -10,20 \ n") # f.write ("InvalidLineWithoutColon \ n") # f.write ("More Day: 10, ABC, 20 \ n") # f.write ("\ n") # Ujian talian kosong CALLULE_SUMS_FROM_FILE ('TB1.TXT')
Nota dan amalan terbaik
- Kepentingan dengan pernyataan : Sentiasa gunakan dengan terbuka (...) untuk memproses fail, yang dapat memastikan bahawa fail itu ditutup secara automatik setelah operasi selesai, dan dapat mencegah kebocoran sumber secara efektif jika pengecualian terjadi dalam program.
- Keperluan untuk Penukaran Jenis Data : Data yang dibaca dari fail teks adalah jenis rentetan secara lalai. Sebelum melakukan apa -apa pengiraan matematik, ia mesti ditukar kepada jenis angka menggunakan int () atau float ().
- Pengendalian ralat : Dalam aplikasi praktikal, kandungan fail mungkin tidak selalu mematuhi format yang diharapkan. Menggunakan blok percubaan untuk menangkap ValueError (apabila rentetan tidak boleh ditukar kepada nombor) atau indeksror (apabila format garis tidak sepadan dengan jangkaan, seperti kehilangan kolon atau koma), ia boleh menjadikan program itu lebih mantap dan mengelakkan kemalangan kerana data yang luar biasa.
- Penggunaan str.strip () : Sebelum melakukan segmentasi rentetan dan penukaran jenis, ia adalah kebiasaan yang baik untuk menggunakan kaedah jalur () untuk menghapuskan aksara ruang putih (termasuk ruang, tab dan garis baru) di kedua -dua hujung rentetan, dan boleh mengelakkan ralat penukaran yang disebabkan oleh whitespace yang tidak dijangka.
- Parameter MaxSplit Kaedah Split () : Apabila menggunakan kaedah Split (), jika pembatas mungkin muncul di pelbagai lokasi rentetan sasaran, dan anda hanya mahu berpecah apabila kejadian pertama, menggunakan parameter maxSplit (seperti line.split (':', 1)) dapat meningkatkan ketepatan parsing.
Meringkaskan
Tutorial ini menerangkan cara untuk memproses data teks berstruktur dengan cekap dan selamat menggunakan Python. Dengan menguasai kemahiran teras seperti bacaan fail, segmentasi rentetan, penukaran jenis, dan pengendalian ralat, anda kini boleh dengan yakin mengekstrak dan mengira nilai yang diperlukan dari pelbagai fail teks. Kemahiran asas ini adalah asas untuk analisis dan pemprosesan data yang lebih kompleks, dan sangat berguna untuk tugas -tugas seperti analisis log dan pembersihan data.
Atas ialah kandungan terperinci Gunakan python untuk memproses data teks berlabel dan melakukan pengiraan berangka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Jalankan pipinstall-rrequirements.txt untuk memasang pakej ketergantungan. Adalah disyorkan untuk mencipta dan mengaktifkan persekitaran maya terlebih dahulu untuk mengelakkan konflik, memastikan bahawa laluan fail adalah betul dan PIP telah dikemas kini, dan menggunakan pilihan seperti-tidak-deps atau-pengguna untuk menyesuaikan tingkah laku pemasangan jika perlu.

Tutorial ini memperincikan bagaimana untuk menggabungkan penyesuai LORA PEFT dengan model asas untuk menghasilkan model yang sepenuhnya bebas. Artikel ini menunjukkan bahawa adalah salah untuk menggunakan transformer.automodel secara langsung untuk memuatkan penyesuai dan menggabungkan berat secara manual, dan menyediakan proses yang betul untuk menggunakan kaedah Merge_and_unload di perpustakaan PEFT. Di samping itu, tutorial juga menekankan pentingnya menangani segmen perkataan dan membincangkan isu dan penyelesaian keserasian versi PEFT.

Python adalah alat ujian yang mudah dan berkuasa di Python. Selepas pemasangan, fail ujian ditemui secara automatik mengikut peraturan penamaan. Tulis fungsi bermula dengan ujian untuk ujian pernyataan, gunakan @pytest.fixture untuk membuat data ujian yang boleh diguna semula, mengesahkan pengecualian melalui pytest.raises, menyokong menjalankan ujian tertentu dan pelbagai pilihan baris arahan, dan meningkatkan kecekapan ujian.

Artikel ini bertujuan untuk meneroka masalah biasa ketepatan pengiraan yang tidak mencukupi bagi nombor titik terapung di Python dan Numpy, dan menjelaskan bahawa punca akarnya terletak pada batasan perwakilan nombor terapung 64-bit standard. Untuk senario pengkomputeran yang memerlukan ketepatan yang lebih tinggi, artikel itu akan memperkenalkan dan membandingkan kaedah penggunaan, ciri-ciri dan senario yang berkenaan dengan perpustakaan matematik ketepatan tinggi seperti MPMATH, SYMPY dan GMPY untuk membantu pembaca memilih alat yang tepat untuk menyelesaikan keperluan ketepatan yang rumit.

TheargParsemoduleisThereMendingWayOhandLecommand-lineargumentsinpython, menyediakan robrobustparsing, typevalidation, helpmessages, anderrorhandling; usesy.argvforsimplecasesrequiringminiminalsetup.

PYPDF2, PDFPlumber dan FPDF adalah perpustakaan teras untuk Python untuk memproses PDF. Gunakan pypdf2 untuk melakukan pengekstrakan teks, penggabungan, pemisahan dan penyulitan, seperti membaca halaman melalui pdfreader dan memanggil extract_text () untuk mendapatkan kandungan; PDFplumber lebih sesuai untuk mengekalkan pengekstrakan teks susun atur dan pengiktirafan jadual, dan menyokong extract_tables () untuk menangkap data jadual dengan tepat; FPDF (disyorkan FPDF2) digunakan untuk menjana PDF, dan dokumen dibina dan dikeluarkan melalui add_page (), set_font () dan sel (). Apabila menggabungkan PDF, kaedah tambahan PDFWriter () dapat mengintegrasikan pelbagai fail

Mendapatkan masa semasa boleh dilaksanakan di Python melalui modul DateTime. 1. Gunakan datetime.now () untuk mendapatkan masa semasa tempatan, 2. Gunakan strftime ("%y-%m-%d%h:%m:%s") untuk memformat tahun, bulan, hari, jam, minit dan kedua, 3 menggunakan datetime.d. UTCNOW (), dan operasi harian dapat memenuhi keperluan dengan menggabungkan datetime.now () dengan rentetan yang diformat.

Tutorial ini menunjukkan secara terperinci bagaimana untuk mengekstrak, mengaitkan, dan mengintegrasikan data tertentu dengan cekap dari pelbagai fail teks menggunakan perpustakaan Python's Pandas. Dengan memuatkan data fail ke dalam data data dan menggunakan operasi gabungan untuk melaksanakan sambungan dalaman berdasarkan alamat IP dan alamat MAC, pelaksanaan akhir yang tepat padanan dan mengeluarkan maklumat persatuan IP, alamat MAC dan port yang sepadan dari fail dari sumber yang berbeza.
