Bạn có văn bản thuần túy, nhưng bạn may mắn vì văn bản của bạn có một số định dạng, bạn có thể sử dụng:
import requests
import pandas as pd
txt_data = requests.get['//downloads.usda.library.cornell.edu/usda-esmis/files/c821gj76b/n870zs10r/h989r4519/AgriPric-03-30-2017.txt'].text
splited_data = txt_data.split['\n']
table_title = 'Prices Received for Field Crops and Fruits - United States: February 2017 with Comparisons'
END_TABLE_LINE = '-------------------------------------------'
def find_no_line_start_table[table_title,splited_data]:
found_no_lines = []
for index, line in enumerate[splited_data]:
if table_title in line:
found_no_lines.append[index]
return found_no_lines
_, table_start = find_no_line_start_table[table_title,splited_data]
def get_start_data_table[table_start, splited_data]:
for index, row in enumerate[splited_data[table_start:]]:
if '[D]' in row:
return table_start + index
def get_end_table[start_table_data, splited_data ]:
for index, row in enumerate[splited_data[start_table_data:]]:
if END_TABLE_LINE in row:
return start_table_data + index
def row[l]:
l = l.split[]
number_columns = 5
if len[l] >= number_columns:
data_row = [''] * number_columns
first_column_done = False
index = 0
for w in l:
if not first_column_done:
data_row[0] = ' '.join[[data_row[0], w]]
if ':' in w:
first_column_done = True
else:
index += 1
data_row[index] = w
return data_row
start_line = get_start_data_table[table_start, splited_data]
end_line = get_end_table[start_line, splited_data]
table = splited_data[start_line : end_line]
def take_table[txt_data]:
comodity = []
price_2011 = []
feb_2016 = []
jan_2017 = []
feb_2017 = []
for r in table:
data_row = row[r]
if data_row:
col_1, col_2, col_3, col_4, col_5 = data_row
comodity.append[col_1]
price_2011.append[col_2]
feb_2016.append[col_3]
jan_2017.append[col_4]
feb_2017.append[col_5]
table_data = {'comodity': comodity, 'price_2011': price_2011,
'feb_2016': feb_2016, 'jan_2017': jan_2017, 'feb_2017': feb_2017}
return table_data
dict_table = take_table[txt_data]
pd.DataFrame[dict_table]
output:
Bảng dài hơn nhiều [43 hàng]
Bạn có thể sử dụng Dict_Table hoặc Pandas DataFrame
# Nếu bạn muốn có được mọi thứ trong cột 3 ..
col_num = 2 ..fromdb[] the source argument provides information about where to read the underlying data from. If the source argument is None or a string it is interpreted as follows:
- col_data = []. - read from stdin
- delimiter = "".
- với Open ['Tệp. TXT'] là F:.
- col_data. append [f. readline []. split [delimiter] [col_num]].
- Làm cách nào để đọc một phần cụ thể của một tệp trong Python?
Phương thức 1: FileObject.ReadLines [] Một đối tượng tệp có thể được tạo trong python và sau đó readlines [] phương thức có thể được gọi trên đối tượng này để đọc các dòng vào một luồng. Phương pháp này được ưa thích khi một dòng hoặc một phạm vi dòng từ tệp cần được truy cập đồng thời.
& nbsp;
Các chức năng sau đây trích xuất một bảng từ một nguồn hoặc cơ sở dữ liệu giống như tệp. Đối với tất cả mọi thứ ngoại trừ FromDB [] đối số nguồn cung cấp thông tin về nơi đọc dữ liệu cơ bản từ đó. Nếu đối số nguồn không có hoặc một chuỗi, nó được giải thích như sau:Không - Đọc từ Stdincsv.reader[] function. Returns a table providing access to the data in the given delimited file. E.g.:
>>> import csv >>> # set up a CSV file to demonstrate with ... with open['test.csv', 'wb'] as f: ... writer = csv.writer[f] ... writer.writerow[['foo', 'bar']] ... writer.writerow[['a', 1]] ... writer.writerow[['b', 2]] ... writer.writerow[['c', 2]] ... >>> # now demonstrate the use of petl.fromcsv ... from petl import fromcsv, look >>> testcsv = fromcsv['test.csv'] >>> look[testcsv] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '2' | +-------+-------+
Chuỗi bắt đầu với ‘ //,‘ // ‘hoặc‘ ftp: // - đọc từ urlcsv.reader[]. So, e.g., to override the delimiter from the default CSV dialect, provide the delimiter keyword argument.
Chuỗi kết thúc bằng ‘.gz, hoặc‘ .bgz, - đọc từ tệp qua giải nén GZIPconvert[].
Hỗ trợ đọc trong suốt từ các tệp URL, .gz và .bz2..gz and .bz2 files.
Chuỗi kết thúc bằng ‘.bz2, - đọc từ tệp qua giải nén BZ2Hàm tiện lợi, như fromcsv [] nhưng với phương ngữ mặc định khác nhau [được phân định tab].fromcsv[] but with different default dialect [tab delimited].
Hỗ trợ đọc trong suốt từ các tệp URL, .gz và .bz2..gz and .bz2 files.
Mới trong phiên bản 0.9.
petl.fromucsv [nguồn = không, phương ngữ =, mã hóa = 'utf-8', ** kwargs] ¶Trả về một bảng chứa dữ liệu Unicode được trích xuất từ một tệp được phân định thông qua mã hóa đã cho. Giống như từcsv [] nhưng chấp nhận một đối số mã hóa bổ sung, đó là một trong những mã hóa được hỗ trợ của Python. Xem thêm codec.fromcsv[] but accepts an additional encoding argument which should be one of the Python supported encodings. See also codecs.
Mới trong phiên bản 0.19.
petl.fromutsv [nguồn = không, phương ngữ =, ** kwargs] ¶Hàm tiện lợi, như FromUcSv [] nhưng với phương ngữ mặc định khác nhau [được phân định tab].fromucsv[] but with different default dialect [tab delimited].
Mới trong phiên bản 0.19.
petl.fromutsv [nguồn = không, phương ngữ =, ** kwargs] ¶
Hàm tiện lợi, như FromUcSv [] nhưng với phương ngữ mặc định khác nhau [được phân định tab].Tệp Pickle
>>> import pickle >>> # set up a file to demonstrate with ... with open['test.dat', 'wb'] as f: ... pickle.dump[['foo', 'bar'], f] ... pickle.dump[['a', 1], f] ... pickle.dump[['b', 2], f] ... pickle.dump[['c', 2.5], f] ... >>> # now demonstrate the use of petl.frompickle ... from petl import frompickle, look >>> testdat = frompickle['test.dat'] >>> look[testdat] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | 1 | +-------+-------+ | 'b' | 2 | +-------+-------+ | 'c' | 2.5 | +-------+-------+
Hỗ trợ đọc trong suốt từ các tệp URL, .gz và .bz2..gz and .bz2 files.
petl.frompickle [nguồn = không] ¶
Trả về một bảng cung cấp quyền truy cập vào dữ liệu ngâm trong tệp đã cho. Các hàng trong bảng đáng lẽ phải được đưa vào tệp một. Ví dụ.:Tệp văn bản
>>> # example data ... with open['test.txt', 'w'] as f: ... f.write['a\t1\n'] ... f.write['b\t2\n'] ... f.write['c\t3\n'] ... >>> from petl import fromtext, look >>> table1 = fromtext['test.txt'] >>> look[table1] +--------------+ | 'lines' | +==============+ | 'a\t1' | +--------------+ | 'b\t2' | +--------------+ | 'c\t3' | +--------------+
petl.fromtext [nguồn = không, tiêu đề = ['dòng'], dải = không] ¶fromtext[] function provides a starting point for custom handling of text files. E.g., using capture[]:
>>> from petl import capture >>> table2 = capture[table1, 'lines', '[.*]\\t[.*]$', ['foo', 'bar']] >>> look[table2] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '3' | +-------+-------+
Hỗ trợ đọc trong suốt từ các tệp URL, .gz và .bz2..gz and .bz2 files.
Xây dựng một bảng từ các dòng trong tệp văn bản đã cho. Ví dụ.:
Hàm FromText [] cung cấp một điểm bắt đầu để xử lý các tệp văn bản tùy chỉnh. Ví dụ: sử dụng Capture []:
Đã thay đổi trong phiên bản 0.4.Hàm dải [] được gọi trên mỗi dòng, theo mặc định sẽ xóa khoảng trắng dẫn đầu và dấu vết, bao gồm ký tự cuối dòng-sử dụng đối số từ khóa dải để chỉ định các ký tự thay thế cho dải.fromtext[] but accepts an additional encoding argument which should be one of the Python supported encodings. See also codecs.
Mới trong phiên bản 0.19.
petl.fromutsv [nguồn = không, phương ngữ =, ** kwargs] ¶
Hàm tiện lợi, như FromUcSv [] nhưng với phương ngữ mặc định khác nhau [được phân định tab].Tệp Pickle
>>> from petl import fromxml, look >>> data = """...
""" >>> with open['example1.xml', 'w'] as f: ... f.write[data] ... f.close[] ... >>> table1 = fromxml['example1.xml', 'tr', 'td'] >>> look[table1] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '2' | +-------+-------+... ...foo bar ...... ...a 1 ...... ...b 2 ...... ...c 2 ...
petl.frompickle [nguồn = không] ¶
>>> data = """...
""" >>> with open['example2.xml', 'w'] as f: ... f.write[data] ... f.close[] ... >>> table2 = fromxml['example2.xml', 'tr', 'td', 'v'] >>> look[table2] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '2' | +-------+-------+... ...... ... ...... ... ...... ... ......
Trả về một bảng cung cấp quyền truy cập vào dữ liệu ngâm trong tệp đã cho. Các hàng trong bảng đáng lẽ phải được đưa vào tệp một. Ví dụ.:
>>> data = """... ... a ... ... ... b ... ... ... c ... ...
""" >>> with open['example3.xml', 'w'] as f: ... f.write[data] ... f.close[] ... >>> table3 = fromxml['example3.xml', 'row', {'foo': 'foo', 'bar': ['baz/bar', 'v']}] >>> look[table3] +-------+------------+ | 'foo' | 'bar' | +=======+============+ | 'a' | ['1', '3'] | +-------+------------+ | 'b' | '2' | +-------+------------+ | 'c' | '2' | +-------+------------+
Tệp văn bản
Hỗ trợ đọc trong suốt từ các tệp URL, .gz và .bz2..gz and .bz2 files.
petl.fromtext [nguồn = không, tiêu đề = ['dòng'], dải = không] ¶
Xây dựng một bảng từ các dòng trong tệp văn bản đã cho. Ví dụ.:If multiple elements match a given field, all values are reported as a tuple.
Hàm FromText [] cung cấp một điểm bắt đầu để xử lý các tệp văn bản tùy chỉnh. Ví dụ: sử dụng Capture []:
Đã thay đổi trong phiên bản 0.4.Hàm dải [] được gọi trên mỗi dòng, theo mặc định sẽ xóa khoảng trắng dẫn đầu và dấu vết, bao gồm ký tự cuối dòng-sử dụng đối số từ khóa dải để chỉ định các ký tự thay thế cho dải.
>>> from petl import fromjson, look >>> data = '[{"foo": "a", "bar": 1}, {"foo": "b", "bar": 2}, {"foo": "c", "bar": 2}]' >>> with open['example1.json', 'w'] as f: ... f.write[data] ... >>> table1 = fromjson['example1.json'] >>> look[table1] +--------+--------+ | u'foo' | u'bar' | +========+========+ | u'a' | 1 | +--------+--------+ | u'b' | 2 | +--------+--------+ | u'c' | 2 | +--------+--------+
petl.fromutext [nguồn = khôngjson.load[] and select the array to treat as the data, see also fromdicts[].
Hỗ trợ đọc trong suốt từ các tệp URL, .gz và .bz2..gz and .bz2 files.
Xây dựng một bảng từ các dòng trong tệp văn bản đã cho thông qua mã hóa đã cho. Giống như FromText [] nhưng chấp nhận một đối số mã hóa bổ sung, đó là một trong những mã hóa được hỗ trợ của Python. Xem thêm codec.
Tệp XMLpetl.fromxml [nguồn, *args, ** kwargs] ¶dict as a table. E.g.:
>>> from petl import fromdicts, look >>> dicts = [{"foo": "a", "bar": 1}, {"foo": "b", "bar": 2}, {"foo": "c", "bar": 2}] >>> table = fromdicts[dicts] >>> look[table] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | 1 | +-------+-------+ | 'b' | 2 | +-------+-------+ | 'c' | 2 | +-------+-------+
Truy cập dữ liệu trong tệp XML. Ví dụ.:fromjson[].
Xây dựng một bảng từ các dòng trong tệp văn bản đã cho thông qua mã hóa đã cho. Giống như FromText [] nhưng chấp nhận một đối số mã hóa bổ sung, đó là một trong những mã hóa được hỗ trợ của Python. Xem thêm codec.
Tệp XML
petl.fromxml [nguồn, *args, ** kwargs] ¶Truy cập dữ liệu trong tệp XML. Ví dụ.:sqlite3 database file via a given query. E.g.:
>>> import csv >>> # set up a CSV file to demonstrate with ... with open['test.csv', 'wb'] as f: ... writer = csv.writer[f] ... writer.writerow[['foo', 'bar']] ... writer.writerow[['a', 1]] ... writer.writerow[['b', 2]] ... writer.writerow[['c', 2]] ... >>> # now demonstrate the use of petl.fromcsv ... from petl import fromcsv, look >>> testcsv = fromcsv['test.csv'] >>> look[testcsv] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '2' | +-------+-------+0
Nếu các giá trị dữ liệu được lưu trữ trong một thuộc tính, hãy cung cấp tên thuộc tính như một đối số vị trí bổ sung, ví dụ:
Giá trị dữ liệu cũng có thể được trích xuất bằng cách cung cấp ánh xạ tên trường đến các đường dẫn phần tử, ví dụ:
Mới trong phiên bản 0.4.
>>> import csv >>> # set up a CSV file to demonstrate with ... with open['test.csv', 'wb'] as f: ... writer = csv.writer[f] ... writer.writerow[['foo', 'bar']] ... writer.writerow[['a', 1]] ... writer.writerow[['b', 2]] ... writer.writerow[['c', 2]] ... >>> # now demonstrate the use of petl.fromcsv ... from petl import fromcsv, look >>> testcsv = fromcsv['test.csv'] >>> look[testcsv] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '2' | +-------+-------+1
Đã thay đổi trong phiên bản 0.6: Nếu nhiều phần tử khớp với một trường đã cho, tất cả các giá trị được báo cáo là một tuple.
>>> import csv >>> # set up a CSV file to demonstrate with ... with open['test.csv', 'wb'] as f: ... writer = csv.writer[f] ... writer.writerow[['foo', 'bar']] ... writer.writerow[['a', 1]] ... writer.writerow[['b', 2]] ... writer.writerow[['c', 2]] ... >>> # now demonstrate the use of petl.fromcsv ... from petl import fromcsv, look >>> testcsv = fromcsv['test.csv'] >>> look[testcsv] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '2' | +-------+-------+2
Các tệp JSON
>>> import csv >>> # set up a CSV file to demonstrate with ... with open['test.csv', 'wb'] as f: ... writer = csv.writer[f] ... writer.writerow[['foo', 'bar']] ... writer.writerow[['a', 1]] ... writer.writerow[['b', 2]] ... writer.writerow[['c', 2]] ... >>> # now demonstrate the use of petl.fromcsv ... from petl import fromcsv, look >>> testcsv = fromcsv['test.csv'] >>> look[testcsv] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '2' | +-------+-------+3
Nếu các giá trị dữ liệu được lưu trữ trong một thuộc tính, hãy cung cấp tên thuộc tính như một đối số vị trí bổ sung, ví dụ:
Giá trị dữ liệu cũng có thể được trích xuất bằng cách cung cấp ánh xạ tên trường đến các đường dẫn phần tử, ví dụ:
>>> import csv >>> # set up a CSV file to demonstrate with ... with open['test.csv', 'wb'] as f: ... writer = csv.writer[f] ... writer.writerow[['foo', 'bar']] ... writer.writerow[['a', 1]] ... writer.writerow[['b', 2]] ... writer.writerow[['c', 2]] ... >>> # now demonstrate the use of petl.fromcsv ... from petl import fromcsv, look >>> testcsv = fromcsv['test.csv'] >>> look[testcsv] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '2' | +-------+-------+4
Lưu ý rằng việc triển khai hiện không phát trực tuyến, tức là toàn bộ tài liệu được tải vào bộ nhớ.
Mới trong phiên bản 0.4.
Đã thay đổi trong phiên bản 0.6: Nếu nhiều phần tử khớp với một trường đã cho, tất cả các giá trị được báo cáo là một tuple.
Các tệp JSON
petl.fromjson [nguồn, *args, ** kwargs] ¶
>>> import csv >>> # set up a CSV file to demonstrate with ... with open['test.csv', 'wb'] as f: ... writer = csv.writer[f] ... writer.writerow[['foo', 'bar']] ... writer.writerow[['a', 1]] ... writer.writerow[['b', 2]] ... writer.writerow[['c', 2]] ... >>> # now demonstrate the use of petl.fromcsv ... from petl import fromcsv, look >>> testcsv = fromcsv['test.csv'] >>> look[testcsv] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '2' | +-------+-------+5
Trích xuất dữ liệu từ tệp JSON. Tệp phải chứa một mảng JSON làm đối tượng cấp cao nhất và mỗi thành viên của mảng sẽ được coi là một hàng dữ liệu. Ví dụ.:
>>> import csv >>> # set up a CSV file to demonstrate with ... with open['test.csv', 'wb'] as f: ... writer = csv.writer[f] ... writer.writerow[['foo', 'bar']] ... writer.writerow[['a', 1]] ... writer.writerow[['b', 2]] ... writer.writerow[['c', 2]] ... >>> # now demonstrate the use of petl.fromcsv ... from petl import fromcsv, look >>> testcsv = fromcsv['test.csv'] >>> look[testcsv] +-------+-------+ | 'foo' | 'bar' | +=======+=======+ | 'a' | '1' | +-------+-------+ | 'b' | '2' | +-------+-------+ | 'c' | '2' | +-------+-------+6
Nếu tệp JSON của bạn không phù hợp với cấu trúc này, bạn sẽ cần phân tích nó qua json.load [] và chọn mảng để xử lý dưới dạng dữ liệu, hãy xem từ FromDicts [].
- //initd.org/psycopg/docs/usage.html#server-side-cursors
- Mới trong phiên bản 0.5.