Hướng dẫn parse python file - phân tích tệp python

Hướng dẫn parse python file - phân tích tệp python

Đã đăng vào thg 3 8, 2019 4:22 SA 0 phút đọc 0 phút đọc

Parsing aguments từ command line dễ ẹc.

#!/urs/bin/env python 3

from argparse import ArgumentParser

def runner(testsuite):
    print ('OK OK! Minh Se Chay Test Suite {} Cho Ban'.format(testsuite))

def main():
    argparser = ArgumentParser('test_manager.py -ts test_suite')
    argparser.add_argument('-ts', '--test_suite', default=None, help='Ban nho nhap ten test_suite ')
    args = argparser.parse_args()
    test_suite_name = args.test_suite
    runner(test_suite_name)

if __name__ == "__main__":
    main()

Sau khi chạy command line, output:

>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban

>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban

Chạy sai thì nó nhắc lệnh, khỏi lo:

>test_manager.py -abc
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
test_manager.py -ts test_suite: error: unrecognized arguments: -abc

>test_manager.py -h
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]

optional arguments:
  -h, --help            show this help message and exit
  -ts TEST_SUITE, --test_suite TEST_SUITE
                        Ban nho nhap ten test_suite

Chúc các bạn thành công !

All rights reserved

Xin chào các bạn. Hôm nay mình sẽ giới thiệu với các bạn về việc Xử lý file JSOn và file XML trong Python

Xử lý file JSON

JSON là một trong những định dạng file trao đổi dữ liệu thông dụng nhất hiện nay. Với kiến trúc đơn giản và tương đồng với cấu trúc của Python nên việc thao tác JSON trên Python rất dễ hiểu.

Load file từ Internet

Thông thường dữ liệu JSON được lấy từ nguồn khác (như file, internet..) nên chương này sẽ bắt đầu bằng cách hướng dẫn download một file JSON từ Internet và sau đó mới parsing nội dung JSON download.

Sử dụng module urllib2 để download file và module json để encode/decode JSON data. Ví dụ:

import	urllib2
import	json
				
response	=	urllib2.urlopen('https://api.github.com/
users/voduytuan/repos')
				
data	=	json.load(response)
				
print	data

Ví dụ trên sẽ truy vấn đường dẫn https://api.github.com/users/voduytuan/repos để lấy danh sách Repository trên Github của mình dưới định dạng JSON.

Parsing JSON Data

Nếu như bạn đã có JSON data dưới dạng chuỗi, muốn parsing chuỗi này thành Data thì sử dụng như cách dưới đây:

import	json
mystring	=	'{"a":1,"b":2,"c":3,"d":4,"e":5}'
data	=	json.loads(mystring)
print	data
(Hiển	thị:	{u'a':	1,	u'c':	3,	u'b':	2,	u'e':	5,	u'd':	4})

Encoding JSON Data

Nếu như bạn đã có một biến và muốn encode thành JSON string thì có thể dùng theo cách sau:

import	json
				
mydata	=	{
				'name':	'John',
				'age':	10
}
jsonstring	=	json.dumps(mydata)
print	jsonstring				
(hiển	thị:	{"age":	10,	"name":	"John"})

Xử lý file XML

Trong phần này, chúng ta sẽ parsing nội dung XML thành dữ liệu để xử lý. Để xử lý XML, ta sẽ sử dụng thư viện Beautifulsoup 4. Đây là một thư viện giúp việc triển khai việc parsing html, xml được nhanh chóng và tiện lợi.

Cài đặt Beautifulsoup

Bạn có thể tham khảo hướng dẫn cách cài đặt tại website http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insbeautiful-soup.

Trên MacOS, có thể cài bằng pip như sau:

$	sudo	pip	install	beautifulsoup4

Cài đặt >test_manager.py -ts "SANITY_SUITE" OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban >test_manager.py -ts "REGRESSION_SUITE" OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban 1 parser

Để parsing xml từ beautifulsoup, tao sử dụng bộ parser xml có tên là lxml . Xem hướng dẫn cài đặt tại http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insa-parser

Trên MacOS, có thể cài bằng pip như sau:

sudo	pip	install	lxml

Cài đặt >test_manager.py -ts "SANITY_SUITE" OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban >test_manager.py -ts "REGRESSION_SUITE" OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban 1 parser

Để parsing xml từ beautifulsoup, tao sử dụng bộ parser xml có tên là lxml . Xem hướng dẫn cài đặt tại http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insa-parser

from	bs4	import	BeautifulSoup	as	Soup
note	=	'''


				
								Belgian	Waffles
								$5.95
								Two	of	our	famous	Belgian	Waff les	with	plenty	of	real	maple syrup	 
                                

								650
				
				
								Strawberry	Belgian	Waffles
								$7.95
								Light	Belgian	waffles	covered	with	strawberries	and	whipped	cream
								900
				

'''
				
soup	=	Soup(note,	'xml')
				
foods	=	soup.findAll('food')
				
for	x	in	foods:
				print	x.find('name').string,	':	',	x.price.string

Ví dụ về parsing XML

Belgian	Waffles	:		$5.95
Strawberry	Belgian	Waffles	:		$7.95		

Cho ví dụ sau:

Khi chạy thì sẽ hiển thị ra màn hình như sau:

  • Đối tượng thuộc class
    >test_manager.py -ts "SANITY_SUITE"
    OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
    
    >test_manager.py -ts "REGRESSION_SUITE"
    OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
    
    2 (BeautifulSoup) sẽ giúp truy xuất các thành phần của file xml nhanh chóng và tiện lợi.
  • Trong ví dụ có một số cách truy xuất đến các phần tử như:
  • >test_manager.py -ts "SANITY_SUITE"
    OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
    
    >test_manager.py -ts "REGRESSION_SUITE"
    OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
    
    3 : trả về mảng các thẻ có tên cần tìm

>test_manager.py -ts "SANITY_SUITE" OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban >test_manager.py -ts "REGRESSION_SUITE" OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban 4 : trả về phần tử đầu tiên có tên cần tìm

Truy xuất trực tiếp thông qua tên thẻ như

>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban

>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
5

>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban

>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
0

Parsing HTML


Tương tự như >test_manager.py -ts "SANITY_SUITE" OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban >test_manager.py -ts "REGRESSION_SUITE" OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban 6 , BeautifulSoup có thể parsing nội dung HTML thông qua hàm khởi tạo và chọn >test_manager.py -ts "SANITY_SUITE" OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban >test_manager.py -ts "REGRESSION_SUITE" OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban 7 ở tham số thứ 2.

http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insa-parser

http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insbeautiful-soup.

Dưới đây mình đã giới thiệu với các bạn về Xử lý file JSOn và file XML trong Python và một số ví dụ cơ bản. Nếu có bất kì thắc mắc gì hãy để lại comment ở phía dưới nhé.