Hướng dẫn how to get values from a table in python - cách lấy giá trị từ bảng trong python

Tôi đang cố gắng nhận các giá trị từ bảng HTML bằng Python. HTML trông như thế này:

<table border=1 width=900>
 <tr><td width=50%>
<table>
    <tr><td align=right><b>Invoice #</td><td><input type=text value="1624140" size=12></td></tr>
    <tr><td align=right>Company</td><td><input type=text value="NZone" size=40></td></tr>
    <tr><td align=right>Name:</td><td><input type=text value="John Dot" size=40></td></tr>
    <tr><td align=right>Address:</td><td><input type=text value="Posie Row, Moscow Road" size=40></td></tr>
    <tr><td align=right>City:</td><td><input type=text value="Co. Dubllin" size=40></td></tr>
    <tr><td align=right>Province</td><td><input type=text value="" size=40></td></tr>
    <tr><td align=right>Postal Code:</td><td><input type=text value="" size=40></td></tr>
    <tr><td align=right>Country:</td><td><input type=text value="IRELAND" size=40></td></tr>
    <tr><td align=right>Date:</td><td><input type=text value="24.4.18" size=12></td></tr>
    <tr><td align=right>Sub Total:</td><td><input type=text value="93,24" size=40></td></tr>
    <tr><td align=right>Combined Weight:</td><td><input type=text value="1,24" size=40></td></tr>
</table>

Mã của tôi cho đến nay là:

from __future__ import print_function
import requests
import re

from bs4 import BeautifulSoup as bs

request = requests.get('url')

content = request.content

soup = bs(content, 'html.parser')  

table = soup.findChildren('table')[1]

rows = table.findChildren('tr')

for row in rows:
cells = row.findChildren('td')
for cell in cells:
    cell_content = cell.getText()

 print(cell_content)

Đầu ra là:

Invoice #
Company
Name:
Address:
City:
Province
Postal Code:
Country:
Date:
Sub Total:
Combined Weight:

Tôi muốn đầu ra cuối cùng như sau:

Invoice:1624140
Company:NZone
Name:John Dot
Address:Possie Row, Moscow Road
City:Co. Dublin
Province:
Postal Code:
Country:IRELAND
Date:24.4.18
Sub Total:93,24
Combined Weight:1,24

Wow, đó là một bộ dữ liệu khá tuyệt vời.

Tệp văn bản không có tiêu đề thích hợp để nó yêu cầu thao tác nhiều hơn một chút. Nếu tiêu đề chỉ là một hàng duy nhất với tên cột, nó sẽ dễ dàng hơn.

Mã bên dưới chuyển đổi tệp văn bản đầu vào thành một lớp tính năng chỉ có nitrat bề mặt, nitrat khác không sâu nhất và độ sâu của giá trị nitrat khác không sâu nhất.

Tất cả mọi thứ bao gồm cả Shapefile kết quả đều nằm trong thư mục đính kèm. Hy vọng rằng các ý kiến ​​trong mã sẽ giúp bạn hiểu những gì nó làm. Một cách tốt để chơi với nó là chạy nó từng hàng (từng khối) trong một cái gì đó như pyscripter

Nhập arcpy

Nhập hệ điều hành

csv = r'c: \ nitrate_gridp_annual \ nitrate_gridp_annual.csv '

out_fc = r'c: \ nitrate_gridp_annual \ ni.shp '

# Đọc CSV vào Memeory

hàng = []

Với Open (CSV, 'R') là F:

& nbsp; & nbsp; & nbsp; Đối với hàng trong F:

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; hàng.append (row.strip ())

# Hai hàng đầu tiên không hữu ích lắm, vì vậy hãy thả chúng

hàng.pop (0) # thả hàng đầu tiên

độ sâu = hàng.pop (0) # thả hàng thứ hai, hiện là hàng đầu tiên

độ sâu = map (int, độ sâu [độ sâu.find (':')+1:]. Split (',')))

# Nhận lat, lon, nitrat gần bề mặt và phép đo không khác biệt

newrows = []

Đối với hàng theo hàng:

& nbsp; & nbsp; & nbsp; rowData = map (float, row.split (','))))

& nbsp; & nbsp; & nbsp; lat, lon = rowdata [0], rowData [1]

& nbsp; & nbsp; & nbsp; nitrat = rowdata [2:]

& nbsp; & nbsp; & nbsp; n_near_surface = nitrate.pop (0) # Đầu tiên là gần bề mặt

& nbsp; & nbsp; & nbsp; # Nhận giá trị khác không sâu nhất và độ sâu của nó

& nbsp; & nbsp; & nbsp; n_deepest = 0,0

& nbsp; & nbsp; & nbsp; Độ sâu = 0

& nbsp; & nbsp; & nbsp; i = 0

& nbsp; & nbsp; & nbsp; Đối với tôi trong phạm vi (Len (nitrat)):

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; n = nitrat

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Nếu n> 0:

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; n_deepest = n

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; d = độ sâu [i+1]

& nbsp; & nbsp; & nbsp; newrow = [lat, lon, n_near_surface, n_deepest, d]

& nbsp; & nbsp; & nbsp; newrows.append (newrow)

# Viết đầu ra vào lớp tính năng

out_path, out_name = os.path.split (out_fc)

sr = arcpy.spatialreference (4326) # xác định hệ tọa độ (WGS84)

fc = arcpy.man Quản lý.createefeatureclass (out_path, out_name, "point", không gian_reference = sr) .getOutput (0)

arcpy.man Quản lý.addfield (fc, "n_0", "double")

arcpy.man Quản lý.addfield (fc, "n_deep", "double")

arcpy.man quản lý.addfield (fc, "chiều sâu", "gấp đôi")

với arcpy.da.insertcursor (fc, ["hình dạng@", "n_0", "n_deep", "chiều sâu"]) là ic:

& nbsp; & nbsp; & nbsp; Đối với hàng trong NewRows:

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; pt = arcpy.point (hàng [1], hàng [0]) # Hãy nhớ rằng lon là x, lat là y

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; newrow = [pt, hàng [2], hàng [3], hàng [4]]

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; IC.Insertrow (NewRow)

Del Row

Del IC

In FC

Vui lòng kiểm tra xem các đầu ra có chính xác không! Tôi vội vã một chút trong khi viết bài này.

Filip.

Làm thế nào để bạn đọc một giá trị bảng trong Python?

Những điểm chính..
Sử dụng thư viện Pandas để lấy số liệu thống kê cơ bản ra khỏi dữ liệu bảng ..
Sử dụng index_col để chỉ định rằng các giá trị của cột nên được sử dụng làm tiêu đề hàng ..
Sử dụng dataFrame.info để tìm hiểu thêm về DataFrame ..
DataFrame. ....
Sử dụng DataFrame. ....
Sử dụng DataFrame ..

Làm thế nào để bạn truy cập các yếu tố bảng trong Python?

Bạn cần chọn hàng theo chỉ mục: Row = Bảng [INDEX] Hàng là một điều khá đẹp mắt.Bạn cần đặt đường viền và tiêu đề thành sai và sau đó bạn có thể lấy trường cụ thể theo tên.select the row by index : row = table[index] row is a prettytable. you need to set border and header to false and then you can get the specific field by name.

Làm thế nào để bạn tạo một danh sách từ một bảng trong Python?

Cách dễ nhất để tạo các bảng trong Python là sử dụng hàm Table () từ thư viện bảng ...
Để sử dụng chức năng này, trước tiên chúng ta phải cài đặt thư viện bằng PIP: PIP Cài đặt Tabulation ..
Sau đó, chúng ta có thể tải thư viện: từ bảng nhập bảng lập bảng ..

Làm thế nào để bạn in một bảng Astropy?

Các giá trị trong bảng hoặc cột có thể được in hoặc truy xuất dưới dạng bảng được định dạng bằng một trong một số phương thức:..
print () chức năng ..
Thêm () hoặc cột.Thêm () các phương thức để cuộn tương tác qua các giá trị bảng ..
pprint () hoặc cột.....
pformat () hoặc cột ..