Hướng dẫn convert file format python - chuyển đổi định dạng tệp python

Tôi đang gặp sự cố khi cố gắng định dạng một tệp văn bản để phù hợp với các tiêu chí cần thiết cho một dự án trường học. Tôi đã bị mắc kẹt trong một thời gian và tôi vẫn rất mới để mã hóa và muốn biết liệu có ai có câu trả lời mà tôi có thể hiểu và thực hiện, hy vọng tôi có thể học hỏi từ những người có kinh nghiệm hơn nhiều.

Nội dung chính

  • Một cách tiếp cận có thể sử dụng lại để trích xuất thông tin từ bất kỳ tệp văn bản nào
  • 1. Hiểu dữ liệu
  • Kết cấu
  • 2. Định nghĩa đầu ra
  • 3. Mã hóa
  • Đọc và phân tách một tập tin
  • Trích xuất thông tin
  • Xây dựng khung dữ liệu
  • Sự kết luận
  • Làm thế nào để bạn chuyển đổi một tệp văn bản thành một danh sách dữ liệu trong Python?
  • Làm cách nào để chuyển đổi TXT thành DataFrame trong Python?
  • Làm cách nào để tạo một bảng văn bản trong Python?
  • Làm cách nào để đọc tệp .txt trong gấu trúc?

Tôi muốn chuyển đổi một tệp văn bản có thể được nhập bởi người dùng trông như thế này trong tệp:

Lennon 12 3.33
McCartney 57 7
Harrison 11 9.1
Starr 3 4.13

và tạo nó để phù hợp với một định dạng bảng như thế này:

Name            Hours      Total Pay
Lambert            34         357.00
Osborne            22         137.50
Giacometti          5         503.50 

Tôi có thể tạo các tiêu đề, mặc dù nó có thể không phải là mã đẹp, nhưng khi tôi in nội dung của tệp kiểm tra, nó thường hóa ra như thế này:

Name            Hour      Total pay
Lennon 12 3.33
McCartney 57 7
Harrison 11 9.1
Starr 3 4.13

Và tôi không hiểu làm thế nào để định dạng đúng nó để trông giống như một bảng thích hợp phù hợp và phù hợp với các tiêu đề thực tế, tôi không chắc làm thế nào để thực sự giải quyết nó hoặc thậm chí bắt đầu từ đâu khi tôi chưa thực hiện Bất kỳ nền tảng thực sự về điều này.

Tôi đã rút mã của mình và chia nó thành bộ xương sau khi thử với những thứ như ____10 và

Name            Hours      Total Pay
Lambert            34         357.00
Osborne            22         137.50
Giacometti          5         503.50 
1 làm cho một mớ hỗn độn của các chỉ mục và đôi khi bằng cách nào đó kết thúc chỉ với các chữ cái đơn để xuất hiện:
file_name = input("Enter the file name: ")

print("Name" + " " * 12 + "Hour" + " " * 6 + "Total pay")
with open(file_name, 'r') as f:

    for line in f:

        print(line, end='')

Tôi biết nó trông đơn giản, và vì nó là. Người hướng dẫn của chúng tôi muốn chúng tôi làm việc với lệnh "mở" và cố gắng tránh xa những thứ có thể làm cho nó không thể đọc được nhưng vẫn nhỏ gọn nhất có thể. Điều này bao gồm việc nhập khẩu các công cụ của bên thứ ba, trong đó có cơ hội sử dụng những thứ như vẻ đẹp như một vài người bạn khác đã cung cấp như một lối thoát dễ dàng hơn.

Tôi đã có một người bạn cùng lớp nói để đọc các dòng biến nó thành một danh sách và điều chỉnh nó từ đó với một số định dạng, và một người bạn cùng lớp khác nói rằng tôi có thể định dạng nó mà không cần liệt kê nó; Mặc dù tôi thấy rằng ký tự mới "\ n" xuất hiện ở cuối mỗi chỉ mục danh sách nếu biến nó thành một danh sách

Ví dụ:

Name            Hours      Total Pay
Lambert            34         357.00
Osborne            22         137.50
Giacometti          5         503.50 
2

Mặc dù những gì tôi không hiểu là làm thế nào để định dạng những thứ nằm trong danh sách để tên có thể được tách ra khỏi từng biến số và theo tiêu đề vì tôi không có nhiều kinh nghiệm với các vòng lặp mà nhiều Nói có thể là một bản sửa lỗi dễ dàng trong lớp của tôi nếu tôi có điều đó xuống.

Tôi không chính xác tìm kiếm câu trả lời được mã hóa thẳng, mà là một điểm theo đúng hướng hoặc nơi để đọc về cách thao tác nội dung được liệt kê

Một cách tiếp cận có thể sử dụng lại để trích xuất thông tin từ bất kỳ tệp văn bản nào

Ảnh của Maksym Kaharlytskyi trên unplash

Trong bài viết này, tôi mô tả cách chuyển đổi một tập hợp các tệp văn bản thành bảng dữ liệu có thể được sử dụng để xử lý ngôn ngữ tự nhiên và học máy. Để giới thiệu cách tiếp cận của tôi, tôi sử dụng bộ dữ liệu bài viết của BBC News được xuất bản bởi D. Greene và P. Cickyham vào năm 2006.

Trước khi nhảy vào IDE và bắt đầu mã hóa, tôi thường làm theo một quy trình bao gồm hiểu dữ liệu, xác định đầu ra và chuyển mọi thứ thành mã. Tôi coi các nhiệm vụ trước khi mã hóa thường là quan trọng nhất vì chúng giúp cấu trúc và tuân theo quy trình mã hóa hiệu quả hơn.

Quy trình ba bước của tôi cho dự án này

1. Hiểu dữ liệu

Kết cấu

Kết cấu

2. Định nghĩa đầu ra

3. Mã hóa

Đọc và phân tách một tập tin

Trích xuất thông tin

Xây dựng khung dữ liệu

Sự kết luận

Làm thế nào để bạn chuyển đổi một tệp văn bản thành một danh sách dữ liệu trong Python?

2. Định nghĩa đầu ra

Dựa trên những hiểu biết của bước hiểu dữ liệu, chúng ta có thể xác định thông tin nào nên được đưa vào đầu ra. Để xác định đầu ra, chúng ta phải xem xét các nghiên cứu của bước trước cũng như suy nghĩ về các trường hợp sử dụng tiềm năng cho đầu ra.

Dựa trên thông tin chúng tôi có khả năng trích xuất từ ​​các tệp văn bản, tôi đưa ra hai trường hợp sử dụng khác nhau để đào tạo máy học:

  • Phân loại văn bản (dự đoán thể loại dựa trên văn bản)
  • Tạo văn bản (Tiêu đề hoặc Thế hệ phụ đề dựa trên văn bản)

Để đáp ứng các yêu cầu cho cả hai trường hợp sử dụng tiềm năng, tôi sẽ đề nghị trích xuất các thông tin sau.

Đầu ra được nhắm mục tiêu cho việc trích xuất thông tin tệp văn bản

Tôi cũng sẽ bao gồm độ dài của văn bản (với số lượng mã thông báo), để dễ dàng lọc cho các văn bản ngắn hơn hoặc dài hơn sau này. Để lưu trữ dữ liệu được trích xuất, tôi sẽ đề xuất tệp giá trị được phân tách bằng tab (.tsv), vì dấu phẩy hoặc dấu chấm phẩy có thể có trong cột văn bản.

3. Mã hóa

Nhờ các bước trước, chúng tôi biết dữ liệu chúng tôi đang xử lý và loại thông tin nào chúng tôi muốn xuất vào cuối quá trình chuyển đổi. Như bạn có thể biết bây giờ, tôi thích chia các nhiệm vụ thành các phần nhỏ hơn. Bước mã hóa không tạo thành một ngoại lệ cho điều này :) Nói chung, tôi sẽ chia mã hóa thành ít nhất ba phần khác nhau và bọc chúng trong các chức năng riêng lẻ:

  • Đọc và phân tách một tập tin
  • Trích xuất thông tin
  • Xây dựng khung dữ liệu

Để làm cho bài viết tin tức này có thể tái sử dụng, tôi tạo một lớp mới thực hiện các chức năng.

Đọc và phân tách một tập tin

Trích xuất thông tin

Xây dựng khung dữ liệu

def read_and_split_file(self, genre: str, file_name: str) -> list:
text_data = list()
current_file = os.path.abspath(os.path.join('data', genre, file_name))
if os.path.exists(current_file):
open_file = open(current_file, 'r', encoding="latin-1")
text_data = open_file.read().split('\n')
text_data = list(filter(None, text_data))
return text_data

Để làm cho bài viết tin tức này có thể tái sử dụng, tôi tạo một lớp mới thực hiện các chức năng.

Trích xuất thông tin

Xây dựng khung dữ liệu

Để làm cho bài viết tin tức này có thể tái sử dụng, tôi tạo một lớp mới thực hiện các chức năng.

Để đọc một tệp có Python, chúng ta cần đường dẫn tương ứng bao gồm thư mục và tên tệp. Như chúng tôi đã quan sát trong bước hiểu dữ liệu, các tệp được lưu trữ trong thư mục thể loại tương ứng của chúng. Điều này có nghĩa là để truy cập một tệp, chúng tôi cần đường dẫn cơ sở (‘dữ liệu cho tôi), thể loại và tên của nó.

def extract_genre_files(self, genre: str) -> pd.DataFrame:
found = True
current_number = 1
titles = list()
subtitles = list()
texts = list()
token_counts = list()
while found:
file_name = "{:03d}.txt".format(current_number)
text_data = self.read_and_split_file(genre, file_name)
if len(text_data) != 0:
titles.append(text_data[0])
subtitles.append(text_data[1])
article_text = ' '.join(text_data[2:])
texts.append(article_text)
token_counts.append(len(nltk.word_tokenize(article_text)))
current_number += 1
else:
found = False

genres = [genre] * len(titles)
data = {'genre': genres, 'title': titles, 'subtitle': subtitles, 'text': texts, 'token_counts': token_counts}
data_frame = pd.DataFrame(data)
return data_frame

Nếu tệp tồn tại, chúng tôi muốn đọc nó, chia nó theo các ký tự dòng mới (‘\ n,), lọc các chuỗi trống và trả về các phần văn bản còn lại dưới dạng danh sách. Trong trường hợp, tệp không tồn tại (ví dụ: số tệp lớn hơn số lượng tệp có sẵn), chúng tôi muốn trả về một danh sách trống. Tôi thích điều này hơn là làm việc với các ngoại lệ hoặc không trả lại, nếu tệp không tồn tại.

import nltk
# nltk.download('punkt')
import pandas as pd

Xây dựng khung dữ liệu

Để làm cho bài viết tin tức này có thể tái sử dụng, tôi tạo một lớp mới thực hiện các chức năng.

Name            Hours      Total Pay
Lambert            34         357.00
Osborne            22         137.50
Giacometti          5         503.50 
0

Để đọc một tệp có Python, chúng ta cần đường dẫn tương ứng bao gồm thư mục và tên tệp. Như chúng tôi đã quan sát trong bước hiểu dữ liệu, các tệp được lưu trữ trong thư mục thể loại tương ứng của chúng. Điều này có nghĩa là để truy cập một tệp, chúng tôi cần đường dẫn cơ sở (‘dữ liệu cho tôi), thể loại và tên của nó.

Name            Hours      Total Pay
Lambert            34         357.00
Osborne            22         137.50
Giacometti          5         503.50 
1

Nếu tệp tồn tại, chúng tôi muốn đọc nó, chia nó theo các ký tự dòng mới (‘\ n,), lọc các chuỗi trống và trả về các phần văn bản còn lại dưới dạng danh sách. Trong trường hợp, tệp không tồn tại (ví dụ: số tệp lớn hơn số lượng tệp có sẵn), chúng tôi muốn trả về một danh sách trống. Tôi thích điều này hơn là làm việc với các ngoại lệ hoặc không trả lại, nếu tệp không tồn tại.

Trong bước cuối cùng, chúng ta phải tạo một vòng lặp qua các thể loại hiện có, trích xuất thông tin cho mỗi thể loại bằng cách gọi phương pháp được thực hiện ở trên, kết hợp đầu ra cho mọi thể loại và cuối cùng lưu khung dữ liệu được nối dưới dạng CSV với bộ phân cách mong muốn.

Sau khi thực hiện lớp và phương thức của nó, chúng ta cần tạo một thể hiện của lớp articlecsvparser và gọi phương thức Transform_Texts_TO_DF bằng cách cung cấp tên mong muốn cho CSV kết quả và danh sách chứa mọi thể loại. Et voilà.

Sự kết luận

Trong bài viết này, tôi đã chỉ ra cách chuyển đổi các tệp văn bản thành khung dữ liệu và lưu nó dưới dạng CSV/TSV. Để sử dụng lại lớp cho một tập dữ liệu khác, chỉ cần tạo một lớp mới kế thừa từ articlecsvparser và ghi đè các phương thức phải thay đổi.

Bạn có thể tìm thấy mã và bộ dữ liệu hoàn chỉnh trong kho lưu trữ này.

Tôi hy vọng bạn thích mã hóa và hạnh phúc!

Làm thế nào để bạn chuyển đổi một tệp văn bản thành một danh sách dữ liệu trong Python?.

Ví dụ 1: Chuyển đổi tệp văn bản thành danh sách bằng cách chia văn bản về sự xuất hiện của '. '. Chúng tôi mở tệp trong chế độ đọc, sau đó đọc tất cả văn bản bằng cách đọc () và lưu trữ nó vào một biến có tên là dữ liệu. Sau đó, chúng tôi thay thế phần cuối của dòng ('/n') bằng '' và chia văn bản hơn nữa khi '.

Làm cách nào để chuyển đổi TXT thành DataFrame trong Python?

Chuyển đổi tệp văn bản thành DataFrame..

Pandas.Read_FWF - Đọc một bảng các dòng được định dạng có chiều rộng cố định vào DataFrame. pandas.read_fwf (filepath_or_buffer, colspecs = 'infress', widths = none, ** kwds).use the pd. read_csv method and define the separator by hand with pd. read_csv('yourFileName', sep='yourseperator') .

Làm cách nào để đọc tệp .txt trong gấu trúc?

Chúng ta có thể đọc dữ liệu từ một tệp văn bản bằng read_table () trong gấu trúc.Hàm này đọc một tệp phân định chung đến một đối tượng DataFrame.Hàm này về cơ bản giống như hàm read_csv () nhưng với delimiter = '\ t', thay vì dấu phẩy theo mặc định.using read_table() in pandas. This function reads a general delimited file to a DataFrame object. This function is essentially the same as the read_csv() function but with the delimiter = '\t', instead of a comma by default.using read_table() in pandas. This function reads a general delimited file to a DataFrame object. This function is essentially the same as the read_csv() function but with the delimiter = '\t', instead of a comma by default.