Python đọc tệp có nhiều dấu phân cách

"Ô đầu tiên trong mỗi hàng" khiến tôi nghi ngờ rằng bạn đã kiểm tra tệp này bằng MS Excel, đây là một lựa chọn rất kém để thực hiện việc này. Luôn kiểm tra tệp văn bản bằng trình soạn thảo văn bản phù hợp (như Notepad++) có thể xử lý các tệp có kích thước tùy ý và cũng thông báo cho bạn về mã hóa, loại dấu phân cách dòng (Windows/UNIX/Mac) và cho phép xem hex cho các ký tự đặc biệt

Dù sao, sử dụng dữ liệu của bạn như đã đăng, điều này hoạt động

data want;
infile datalines firstobs=2 dsd dlm="|";
input reqnr $ s_id :$11. abc :$3. abc_date :yymmdd10. name $ cont :$30.;
datalines;
Reqnr|"S Id"|"abc"|"abc Date"|"Name"|"cont"
FCQ00001|"FCQ00001000"|"No"|""|"FLOW"|"EDTA K2 4mL (violet)"
FCQ00005|"FCQ00005000"|"No"|""|"FLOW"|"EDTA K2 4mL (violet)"
FCQ00005|"FCQ00005000"|"No"|""|"FLOW"|"EDTA ""K2 4mL (violet)"
FCQ00005|"FCQ00005000"|"No"|""|"FLOW"|"EDTA "K2 4mL (violet)"
;

Như bạn có thể thấy, tôi đã thêm các hàng bổ sung để minh họa cách tùy chọn DSD xử lý các trích dẫn bổ sung có trong các dấu phân cách

Bạn sẽ có thể sử dụng mã bằng cách xóa khối datalines và thay thế DATALINES trong câu lệnh INFILE bằng đường dẫn đến tệp văn bản của bạn. Nếu có điều gì đó không mong muốn xảy ra, vui lòng sao chép/dán toàn bộ nhật ký của bước vào cửa sổ được mở bằng nút này

Bài viết này minh họa cách nhập dữ liệu tệp văn bản có nhiều dấu phân cách vào một trang tính Excel bằng 3 phương pháp khác nhau. Chúng tôi sẽ sử dụng các tính năng tích hợp sẵn của Excel và mã VBA để hoàn thành nhiệm vụ. Hãy đi sâu vào các ví dụ để hiểu rõ hơn về các phương pháp


Mục lục ẩn

Tải sách bài tập thực hành

3 phương pháp phù hợp để nhập tệp văn bản có nhiều dấu phân cách vào Excel

1. Nhập dữ liệu tệp văn bản với nhiều dấu phân cách bằng tính năng thuật sĩ kế thừa

2. Chuẩn bị và sau đó nhập dữ liệu tệp văn bản với nhiều dấu phân cách bằng tính năng lấy và chuyển đổi dữ liệu

3. Chạy mã VBA để nhập dữ liệu tệp văn bản có nhiều dấu phân cách vào trang tính Excel

ghi chú

Phần kết luận

Những bài viết liên quan

Tải sách bài tập thực hành

Tải xuống sách bài tập thực hành này để thực hành trong khi bạn đang đọc bài viết này

Nhập tệp văn bản có nhiều dấu phân cách. xlsm


3 phương pháp phù hợp để nhập tệp văn bản có nhiều dấu phân cách vào Excel

Giả sử chúng ta có một tập dữ liệu có nhiều dấu phân cách trong một tệp văn bản. Tập dữ liệu trong tệp văn bản trông như thế này-

Python đọc tệp có nhiều dấu phân cách

Bộ dữ liệu đại diện cho chi tiết bán hàng cho một cửa hàng. Bạn có thể tải xuống tệp văn bản để thực hành từ liên kết. Ở đây, mỗi dữ liệu được phân tách bằng dấu phẩy hoặc dấu chấm phẩy. Chúng tôi muốn nhập dữ liệu này từ tệp văn bản vào bảng tính Excel


1. Nhập dữ liệu tệp văn bản với nhiều dấu phân cách bằng tính năng thuật sĩ kế thừa

Tính năng nhập tệp văn bản của trình hướng dẫn kế thừa tạo điều kiện cho chúng tôi có nhiều tùy chọn để đặt cấu trúc mong muốn của tập dữ liệu đã nhập trong trang tính Excel

Chuyển đến Pháp sư kế thừa

  • Chuyển đến tab Dữ liệu từ Dải băng Excel
  • Nhấp vào tùy chọn Nhận dữ liệu
  • Rê chuột vào tùy chọn Legacy Wizards
  • Chọn tùy chọn Từ văn bản (Cũ)

Python đọc tệp có nhiều dấu phân cách

Nếu tùy chọn Từ văn bản (Cũ) không khả dụng
Trong trường hợp tùy chọn Từ văn bản (Cũ) không khả dụng trong các tùy chọn Trình hướng dẫn cũ, hãy làm như sau để bật tùy chọn này.

  • Nhấn Alt + T + O trên bàn phím để mở Tùy chọn Excel
  • Nhấp vào tab Dữ liệu
  • Chọn hộp có tên “Từ văn bản (Cũ)” trong tùy chọn “Hiển thị trình hướng dẫn nhập dữ liệu cũ”
  • Cuối cùng nhấn OK để lưu cài đặt

Python đọc tệp có nhiều dấu phân cách

Nhập tệp văn bản
Khi chúng tôi nhấp vào tùy chọn Từ văn bản (Cũ) từ Trình hướng dẫn cũ, nó sẽ mở cửa sổ “Nhập tệp văn bản” để chọn tệp văn bản. Điều hướng đến vị trí tệp và chọn nhập nó.

Python đọc tệp có nhiều dấu phân cách

Định cấu hình cài đặt
Bước 1/3.

  • Chọn tùy chọn Được phân cách
  • Kiểm tra tùy chọn “Dữ liệu của tôi có tiêu đề”, vì tập dữ liệu mẫu, chúng tôi đang sử dụng có tiêu đề
  • Nhấp vào nút Tiếp theo

Python đọc tệp có nhiều dấu phân cách

Bước 2/3

  • Kiểm tra các tùy chọn Dấu chấm phẩy và Dấu phẩy trong tùy chọn Dấu phân cách

Ghi chú. Tập dữ liệu của chúng tôi có hai dấu phân cách này. Có một số tùy chọn khác bao gồm tùy chọn “Khác” cho các dấu phân cách không có sẵn trong danh sách

  • Ngoài ra, hãy kiểm tra tùy chọn “Xử lý các dấu phân cách liên tiếp là một”
  • Nhấp vào nút Tiếp theo

Python đọc tệp có nhiều dấu phân cách

Bước 3/3

  • Theo mặc định, định dạng dữ liệu cột là Chung. Trong ví dụ này, chúng tôi sẽ để nguyên như vậy
  • Cuối cùng nhấn nút Kết thúc.  

Python đọc tệp có nhiều dấu phân cách

Chọn mục tiêu
Sau tất cả các bước trên, hãy chọn vị trí đặt dữ liệu đã nhập của bạn. Ở đây, chúng tôi đã chọn ô A1 trong trang tính hiện tại.

Python đọc tệp có nhiều dấu phân cách

Tập dữ liệu đã nhập

Python đọc tệp có nhiều dấu phân cách

Đọc thêm. Cách nhập dữ liệu vào Excel từ một tệp Excel khác (2 cách)


2. Chuẩn bị và sau đó nhập dữ liệu tệp văn bản với nhiều dấu phân cách bằng tính năng lấy và chuyển đổi dữ liệu

Trong hình minh họa này, chúng ta sẽ sử dụng tính năng lấy và chuyển đổi dữ liệu của Excel để nhập dữ liệu có nhiều dấu phân cách từ tệp văn bản sang trang tính Excel. Nhưng lúc này chúng ta cần chuẩn bị dữ liệu trước khi nhập vào Excel

Chuẩn bị Tập dữ liệu
Chúng ta cần giảm nhiều dấu phân cách thành một dấu phân cách để hoạt động với tính năng nhận và biến đổi. Đối với tập dữ liệu của chúng tôi, chúng tôi cần thay thế tất cả các dấu chấm phẩy bằng dấu phẩy. Để làm được điều đó, chúng tôi đã thực hiện như sau.

  • Đã tạo một bản sao của tệp văn bản gốc có tên là SampleDataModified. txt
  • Đã mở tệp và nhấn Ctrl + H
  • Trong cửa sổ Thay thế, hãy đặt dấu chấm phẩy vào hộp nhập "Tìm gì" và dấu phẩy trong hộp nhập "Thay thế bằng"
  • Nhấp vào nút Thay thế tất cả

Python đọc tệp có nhiều dấu phân cách

  • Hiện chúng tôi chỉ có dấu phẩy làm dấu phân cách trong tập dữ liệu của mình

Python đọc tệp có nhiều dấu phân cách

Nhập tệp văn bản
Làm theo các bước đơn giản để nhập tệp văn bản đã sửa đổi bằng tính năng lấy và biến đổi trong Excel.

  • Chuyển đến tab Dữ liệu
  • Nhấp vào nút Lấy dữ liệu
  • Di chuột qua tùy chọn Từ tệp
  • Nhấp vào tùy chọn Từ văn bản/CSV

Python đọc tệp có nhiều dấu phân cách

  • Điều hướng đến vị trí tệp của SampleTextModified. txt và chọn tệp để nhập

Python đọc tệp có nhiều dấu phân cách

  • Trong bản xem trước, tập dữ liệu được hiển thị dưới dạng bảng
  • Nhấp vào nút Tải

Python đọc tệp có nhiều dấu phân cách

Tập dữ liệu đã nhập

Python đọc tệp có nhiều dấu phân cách

Đọc thêm. Cách nhập dữ liệu từ tệp văn bản vào Excel (3 phương pháp)


bài đọc tương tự

  • Nhập dữ liệu từ Excel vào Word tự động bằng VBA (2 cách)
  • Cách trích xuất dữ liệu từ danh sách bằng công thức Excel (5 phương pháp)
  • Macro Excel. Trích xuất dữ liệu từ nhiều tệp Excel (4 phương pháp)
  • Cách trích xuất năm từ ngày trong Excel (3 cách)
  • Cách trích xuất tháng từ ngày trong Excel (5 cách nhanh chóng)

3. Chạy mã VBA để nhập dữ liệu tệp văn bản có nhiều dấu phân cách vào trang tính Excel

Chúng ta sẽ sử dụng các hàm VBA Split và InStr để định cấu hình mã VBA để nhập tệp văn bản vào trang tính Excel. Trước tiên hãy giới thiệu các chức năng

Hàm chia VBA . Hàm Split trong Excel VBA dùng để tách một chuỗi thành các chuỗi con. Hàm trả về mảng một chiều dựa trên số không. Mỗi phần tử của mảng là một chuỗi con được phân tách bằng dấu phân cách được xác định trước. Cú pháp của hàm VBA là-

Split(biểu thức, [dấu phân cách, [giới hạn, [so sánh]]])

Đây,
biểu thức– Tham số bắt buộc này đại diện cho một chuỗi văn bản chứa các chuỗi con và dấu phân cách. Nếu chuỗi rỗng, hàm cũng sẽ trả về một mảng trống.

dấu phân cách– Một ký tự chuỗi được sử dụng để chia chuỗi thành các chuỗi con. Nếu bỏ qua, hàm sẽ sử dụng ký tự khoảng trắng làm dấu phân cách. Và nếu nó là một chuỗi rỗng, nó sẽ trả về chuỗi gốc làm đầu ra

giới hạn– Nó biểu thị số lượng chuỗi con sẽ trả về trong đầu ra. Nếu bỏ qua, hàm sẽ trả về tất cả các chuỗi con

so sánh- Nó có một số giá trị. Chúng ta có thể sử dụng vbBinaryCompare cho dấu phân cách phân biệt chữ hoa chữ thường và vbTextCompare cho dấu phân cách không phân biệt chữ hoa chữ thường trong hàm Split

Hàm InStr của VBA. Chúng tôi sử dụng hàm InStr trong Excel VBA để tìm kiếm một chuỗi cụ thể trong một chuỗi đã cho từ một vị trí được xác định trước. Cú pháp là-

InStr([bắt đầu], chuỗi 1, chuỗi 2, [so sánh])

Đây,
[bắt đầu]- Vị trí bắt đầu tìm kiếm. Mặc định là 1 nếu bỏ qua.
chuỗi 1- Chuỗi đã cho mà từ đó hàm tìm kiếm chuỗi mong muốn.
chuỗi 2- Chuỗi cụ thể mà hàm tìm kiếm trong chuỗi đã cho.
[so sánh]- Kiểu so sánh. Mặc định là So sánh nhị phân.

Để nhập dữ liệu tệp văn bản có nhiều dấu phân cách vào trang tính Excel, chúng ta cần mở và viết mã VBA trong trình chỉnh sửa cơ bản trực quan. Làm theo các bước để mở trình soạn thảo trực quan cơ bản và viết một số mã ở đó

  • Chuyển đến tab Nhà phát triển từ Dải băng Excel
  • Nhấp vào tùy chọn Visual Basic

Python đọc tệp có nhiều dấu phân cách

  • Trong cửa sổ Visual Basic For Applications, nhấp vào menu thả xuống Chèn để chọn tùy chọn Mô-đun Mới

Python đọc tệp có nhiều dấu phân cách

Bây giờ hãy đặt mã của bạn vào trình chỉnh sửa mã trực quan và nhấn F5 để chạy mã. Đoạn mã sau đã thay thế dấu chấm phẩy của tệp văn bản bằng dấu phẩy bằng cách sử dụng chức năng VBA Replace

Sub ImportTextFileDatatoExcel()
    Dim fileLocation As String, textData As String
    Dim rowNum As Long
    folderLocation = "D:\Exceldemy"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(folderLocation)
    rowNum = 1
    Close #1
    For Each textFile In folder.Files
        fileLocation = folder & "\" & textFile.Name
        Open fileLocation For Input As #1
        Do While Not EOF(1)
            Line Input #1, textData
            textData = Replace(textData, ";", ",")
            If InStr(textData, ",") = 0 Then
                Cells(rowNum, 1) = textData
            Else
                tArray = Split(textData, ",")
                nColumn = 1
                For Each element In tArray
                    Cells(rowNum, nColumn) = element
                    nColumn = nColumn + 1
                Next element
            End If
            rowNum = rowNum + 1
        Loop
        Close #1
    Next textFile
End Sub

Trong đoạn mã trên, hãy đặt vị trí thư mục của riêng bạn chứa tệp văn bản trong mã. Ảnh chụp màn hình sau đây hiển thị vị trí tệp cho hình minh họa này

Python đọc tệp có nhiều dấu phân cách

Tập dữ liệu đã nhập

Python đọc tệp có nhiều dấu phân cách

Đọc thêm. Chuyển đổi tệp Excel thành tệp văn bản bằng dấu phân cách (2 cách tiếp cận dễ dàng)


ghi chú

  • Mã VBA chúng tôi đã sử dụng có thể hoạt động với nhiều tệp văn bản trong thư mục đích một cách hiệu quả
  • Nếu dấu phân cách được chỉ định không tồn tại trong chuỗi nguồn , the Split function will return the string as it is
  • Nếu đối số so sánh của hàm Split là . omitted, the default value is vbBinaryCompare. 
  • Hàm InStrRev trả về 0 nếu substring doesn’t exist in the given string.

Phần kết luận

Bây giờ, chúng ta đã biết cách nhập dữ liệu tệp văn bản vào Excel bằng nhiều dấu phân cách trong Excel với sự trợ giúp của các ví dụ phù hợp. Hy vọng sẽ giúp bạn tự tin sử dụng chức năng hơn. Mọi thắc mắc hay góp ý đừng quên để lại ở khung bình luận bên dưới