Hướng dẫn python split text file into array - python chia tệp văn bản thành mảng

Vì vậy, bạn muốn tạo một danh sách các danh sách ... chúng ta cần bắt đầu với một danh sách trống

list_of_lists = []

Tiếp theo, chúng tôi đọc nội dung tệp, từng dòng

with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)

Một trường hợp sử dụng phổ biến là dữ liệu cột, nhưng các đơn vị lưu trữ của chúng tôi là các hàng của tệp, mà chúng tôi đã đọc từng cái một, vì vậy bạn có thể muốn chuyển đổi danh sách danh sách của mình. Điều này có thể được thực hiện với thành ngữ sau

by_cols = zip(*list_of_lists)

Một cách sử dụng phổ biến khác là đặt tên cho mỗi cột

col_names = ('apples sold', 'pears sold', 'apples revenue', 'pears revenue')
by_names = {}
for i, col_name in enumerate(col_names):
    by_names[col_name] = by_cols[i]

để bạn có thể hoạt động trên các mục dữ liệu đồng nhất

 mean_apple_prices = [money/fruits for money, fruits in
                     zip(by_names['apples revenue'], by_names['apples_sold'])]

Hầu hết những gì tôi đã viết có thể được tăng tốc bằng mô -đun

with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
0, từ thư viện tiêu chuẩn. Một mô -đun bên thứ ba khác là
with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
1, cho phép bạn tự động hóa hầu hết các khía cạnh của phân tích dữ liệu điển hình (nhưng có một số phụ thuộc).


Cập nhật trong khi ở Python 2

with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
2 trả về một danh sách khác nhau (được chuyển đổi), trong Python 3, tình huống đã thay đổi và
with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
2 trả về một đối tượng zip không thể đăng ký.

Nếu bạn cần truy cập được lập chỉ mục, bạn có thể sử dụng

by_cols = list(zip(*list_of_lists))

Điều đó cung cấp cho bạn một danh sách các danh sách trong cả hai phiên bản của Python.

Mặt khác, nếu bạn không cần truy cập được lập chỉ mục và những gì bạn muốn chỉ là xây dựng một từ điển được lập chỉ mục bằng tên cột, một đối tượng zip vẫn ổn ...

file = open('some_data.csv')
names = get_names(next(file))
columns = zip(*((x.strip() for x in line.split(',')) for line in file)))
d = {}
for name, column in zip(names, columns): d[name] = column

Xây dựng vấn đề: Hãy xem xét rằng bạn đang cố gắng đọc nội dung của tệp văn bản. Làm thế nào bạn sẽ đọc văn bản từ tệp và lưu trữ nó trong danh sách Python? Consider that you are trying to read the contents of a text file. How will you read the text from the file and store it in a Python list?

cảnh 1

Để đạt được sự rõ ràng tốt hơn về vấn đề này, hãy để một câu hỏi tương tự được hỏi trên Stackoverflow:

Hướng dẫn python split text file into array - python chia tệp văn bản thành mảng
Nguồn: https://stackoverflow.com/questions/14676265/how-to-read-a-text-file-into-a-list-or-array-with-python

Trước khi chúng tôi đi sâu vào giải pháp, hãy để câu trả lời câu hỏi đầu tiên -

Câu hỏi: Tại sao toàn bộ nội dung tệp được lưu trữ dưới dạng một mục duy nhất trong danh sách? Python không có manh mối để phân chia nội dung và lưu trữ nó như một yếu tố riêng lẻ trong danh sách. Nói cách khác, nhà phát triển đã không cho Python một cách để xác định cách tách các văn bản riêng lẻ khỏi tệp và sau đó lưu trữ chúng dưới dạng các mục riêng biệt trong danh sách. “Why is the entire file content being stored as a single item within the list?”
Answer: Simply put, you are reading the entire content of the file at once and then storing it as a single item within the list. Python has no clue where to split the content and store it as an individual element within the list. In other words, the developer has not given Python a way to determine how to separate individual texts from the file and then store them as separate items within the list.

Với sự nghi ngờ đầu tiên, chúng ta hãy đi sâu vào câu hỏi quan trọng của nhiệm vụ-Làm thế nào để lưu trữ nội dung của một tệp văn bản dưới dạng các yếu tố riêng biệt trong danh sách Python?

Thảo luận: Nội dung của một tệp chứa một chuỗi các ký tự. Khi bạn phân chia nội dung của tệp, chúng được coi là danh sách các giá trị riêng biệt dựa trên một dấu phân cách được chỉ định. Ví dụ: một tệp văn bản có nội dung là 0,0,200,0,53,1,0,255 có thể được chia trên DELIMITER, và nó sẽ tạo danh sách

with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
4.The contents of a file contain a sequence of characters. When you split the contents of the file, they are treated as separate list of values based on a specified delimiter. For example, a text file with the content “0,0,200,0,53,1,0,255” can be split on the delimiter “,” and it will create the list
with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
4.

Bạn có thể tải xuống tệp đang được sử dụng làm ví dụ trong hướng dẫn này tại đây:

Tốt! Hãy cùng đi sâu vào nhiều cách để đạt được đầu ra mong muốn.

Giải pháp: Sử dụng str.split ()

Cách tiếp cận: Đọc toàn bộ nội dung của tệp dưới dạng chuỗi bằng hàm

with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
5. Sử dụng chức năng
with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
6 với chuỗi này để trả về danh sách các giá trị chứa từng văn bản của tệp dưới dạng một mục riêng. Bộ phân cách được sử dụng trong trường hợp đã cho là,
Read the entire content of the file as a string using the
with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
5 function. Use the
with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
6 function with this string to return a list of values containing each text of the file as a separate item. The separator to be used in the given case is “,”.

Code:

file = open("demo.txt", "r")
contents = file.read()
list_of_contents = contents.split(",")
file.close()
print(list_of_contents)

Output:

________số 8

Một bản tóm tắt nhanh để chia ra chức năng () Bạn có thể chỉ định bất kỳ dấu phân nào theo yêu cầu của bạn. Tuy nhiên, theo mặc định, dấu phân cách là khoảng trắng.A Quick Recap to split() Function:

with open('data') as f:
    for line in f:
        inner_list = [elt.strip() for elt in line.split(',')]
        # in alternative, if you need to use the file content as numbers
        # inner_list = [int(elt.strip()) for elt in line.split(',')]
        list_of_lists.append(inner_list)
7 is a built-in method in Python that is used to cut/split a given string based on a given separator. You can specify any separator according to your requirement. However, by default, the separator is a whitespace.

Syntax:

Hướng dẫn python split text file into array - python chia tệp văn bản thành mảng
  • Dấu tách & nbsp; là một tham số tùy chọn được sử dụng để chỉ định dấu phân cách (DELIMITERS). Theo mặc định, nó là bất kỳ ký tự khoảng trắng. is an optional parameter that is used to specify the separator (delimiters). By default, it is any whitespace character.
  • MaxSplit & nbsp; là một tham số tùy chọn cho phép chúng tôi chỉ định số lượng phân tách tối đa mà chúng tôi muốn thực hiện. Theo mặc định, giá trị của nó là & nbsp; -1 & nbsp; đó là tất cả các lần xuất hiện.is an optional parameter that allows us to specify the maximum number of splits that we want to perform. By default its value is -1 which is “all occurrences”.

Đọc liên quan: Làm thế nào để cắt một chuỗi trong Python?

Kịch bản 2: Nội dung riêng biệt với mỗi dòng tệp văn bản và lưu trữ dưới dạng danh sáchSeparate Contents From Each Line of Text File and Store as a List

Trong trường hợp trước, tệp có tất cả các nội dung được lưu trữ trong một dòng mã. Nhưng điều gì sẽ xảy ra nếu bạn có một tệp không chỉ có nội dung được phân tách bởi một dấu phân cách mà còn có nhiều dòng văn bản với văn bản được phân tách bằng dấu phẩy?

Ví dụ: Xem xét tệp được đưa ra dưới đây:Consider the file given below:

Hướng dẫn python split text file into array - python chia tệp văn bản thành mảng

Đầu ra dự kiến:

['0', '0', '200', '0', '53', '1', '0', '255', '1,5', '2.5', '3.5', '4,5', ' 5,5 ',' 0,1 ',' 0,2 ',' 0,3 ',' 0,4 ',' 0,5 ']]]

Giải pháp: Lưu trữ riêng từng dòng trong một danh sách và làm phẳng danh sách

Vì, bạn không chỉ phải chăm sóc dấu phân cách mà còn xem xét từng dòng mới; Bạn có thể làm theo một quy trình hai bước trong trường hợp này.

  • Bước 1: Tách từng dòng và lưu trữ chúng dưới dạng các yếu tố riêng lẻ trong danh sách. Tại thời điểm này, bạn sẽ có một danh sách chứa từng dòng được lưu trữ dưới dạng một mục trong danh sách. Theo câu hỏi đã cho, danh sách sẽ trông giống như thế này:
    with open('data') as f:
        for line in f:
            inner_list = [elt.strip() for elt in line.split(',')]
            # in alternative, if you need to use the file content as numbers
            # inner_list = [int(elt.strip()) for elt in line.split(',')]
            list_of_lists.append(inner_list)
    
    8
    Separate each line and store them as individual elements in a list. At this point you will have a list containing each line stored as an item within the list. According to the given question, the list will look something like this:
    with open('data') as f:
        for line in f:
            inner_list = [elt.strip() for elt in line.split(',')]
            # in alternative, if you need to use the file content as numbers
            # inner_list = [int(elt.strip()) for elt in line.split(',')]
            list_of_lists.append(inner_list)
    
    8
  • Bước 2: Tạo danh sách độc lập trong danh sách trên bằng cách phân tách từng mục trên cơ sở DELIMITER. Vì vậy, danh sách bây giờ đại diện cho một danh sách các danh sách: ________ 19Create independent lists within the above list by separating each item on the basis of the delimiter. So the list now represents a list of lists:
    with open('data') as f:
        for line in f:
            inner_list = [elt.strip() for elt in line.split(',')]
            # in alternative, if you need to use the file content as numbers
            # inner_list = [int(elt.strip()) for elt in line.split(',')]
            list_of_lists.append(inner_list)
    
    9
  • Bước 3: Cuối cùng, làm phẳng danh sách được hình thành trong bước 2. Lưu ý rằng Bước 2 và Bước 3 có thể được hợp nhất thành một bước duy nhất. Để tìm hiểu cách làm phẳng danh sách các danh sách, bạn có thể tham khảo hướng dẫn này: làm phẳng danh sách các danh sách trong Python.Finally, flatten the list formed in step 2. Note that step 2 and step 3 can be merged into a single step. To learn how to flatten a list of lists you can refer to this tutorial: Flatten A List Of Lists In Python.

Code:

separated_lines = [line.strip() for line in open('demo.txt')]
flattened_list = [item for i in separated_lines for item in i.split(",")]
print(flattened_list)
# ['0', '0', '200', '0', '53', '1', '0', '255', '1.5', '2.5', '3.5', '4.5', '5.5', '0.1', '0.2', '0.3', '0.4', '0.5']

Tuy nhiên, nếu bạn chỉ muốn lưu trữ toàn bộ dòng tệp nhất định dưới dạng mục trong danh sách thì bạn có thể tham khảo hướng dẫn toàn diện này: Cách đọc từng dòng tệp và lưu trữ vào danh sách?How to Read a File Line-By-Line and Store Into a List?

Sự kết luận

Với điều đó, chúng tôi đi đến cuối bài viết này và chúng tôi đã trải qua các tình huống khác nhau để chứng minh cách bạn có thể lưu trữ nội dung của một tệp văn bản vào một danh sách trong Python. Vui lòng đăng ký và theo dõi các cuộc thảo luận và hướng dẫn thú vị hơn.subscribe and stay tuned for more interesting discussions and tutorials.

Mã hóa hạnh phúc! 🙂


Đối với bất kỳ nhà phát triển phần mềm nào, điều quan trọng là phải làm chủ IDE, viết, kiểm tra và gỡ lỗi mã chất lượng cao với rất ít nỗ lực. Bạn có muốn làm chủ tất cả những điều này trong Python IDE phổ biến nhất không?

Khóa học này sẽ đưa bạn từ người mới bắt đầu đến chuyên gia về Pycharm trong ~ 90 phút.

Tham gia pycharm masterclassnow, và Master Pycharm vào ngày mai!PyCharm Masterclassnow, and master PyCharm by tomorrow!

Hướng dẫn python split text file into array - python chia tệp văn bản thành mảng

Tôi là một blogger Python chuyên nghiệp và người tạo nội dung. Tôi đã xuất bản nhiều bài báo và tạo ra các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc như một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Mạng.

Bạn có thể liên lạc với tôi @:

Upwork LinkedIn
LinkedIn

Làm thế nào để bạn chia một tệp văn bản thành một mảng trong Python?

Cách nhanh nhất để phân chia văn bản trong Python là với phương thức Split (). Đây là một phương pháp tích hợp hữu ích để tách một chuỗi thành các phần riêng lẻ của nó. Phương thức chia () sẽ trả về một danh sách các phần tử trong một chuỗi.with the split() method. This is a built-in method that is useful for separating a string into its individual parts. The split() method will return a list of the elements in a string.

Làm thế nào để bạn đọc một tệp văn bản vào một danh sách hoặc một mảng có python?

Làm thế nào để đọc một tệp văn bản vào một danh sách hoặc một mảng có python ?..
Kịch bản 1. Giải pháp: Sử dụng str.split ().
Kịch bản 2: Nội dung riêng biệt từ mỗi dòng tệp văn bản và lưu trữ dưới dạng danh sách.Giải pháp: Lưu trữ riêng từng dòng trong một danh sách và làm phẳng danh sách ..
Conclusion..

Làm thế nào để bạn chia một tập tin thành các khối trong Python?

Để phân chia một tệp nhị phân lớn trong nhiều tệp, trước tiên bạn nên đọc tệp theo kích thước của chunk bạn muốn tạo, sau đó viết đoạn đó vào một tệp, đọc đoạn tiếp theo và lặp lại cho đến khi bạn đạt đến phần cuối của tệp gốc.first read the file by the size of chunk you want to create, then write that chunk to a file, read the next chunk and repeat until you reach the end of original file.

Làm cách nào để đọc một tệp văn bản vào một danh sách?

Bạn có thể đọc một tệp văn bản bằng các phương thức Open () và Readlines ().Để đọc một tệp văn bản vào một danh sách, hãy sử dụng phương thức Split ().Phương pháp này chia các chuỗi vào một danh sách tại một nhân vật nhất định.use the split() method. This method splits strings into a list at a certain character.