Chuyển đổi tệp có dấu phân cách

Dữ liệu xuất từ châu Âu thường dùng dấu chấm phẩy (vì dấu phẩy được dùng làm dấu thập phân); các kho dữ liệu cũ dùng tab; nhật ký Unix ưa dùng dấu ống; còn hầu hết mọi thứ khác đều là CSV. Dán sai định dạng vào công cụ không phù hợp có thể khiến tác vụ nhập dữ liệu hỏng theo những cách khó lường. Bộ chuyển đổi này chuyển đổi giữa các dấu phân cách một cách an toàn và đọc các trường đặt trong dấu ngoặc kép như một khối duy nhất, nhờ đó dấu phân cách nguồn bên trong trường không bị ảnh hưởng khi thay đổi.

Cách chuyển đổi giữa các dấu phân cách

  1. 1

    Dán văn bản

    Dán văn bản CSV, TSV, SSV hoặc PSV vào trình soạn thảo. Bộ chuyển đổi hoạt động trên văn bản được dán, không phải trên các tệp tải lên.

  2. 2

    Chọn dấu phân cách nguồn và đích

    Chọn dấu phẩy, tab, dấu chấm phẩy, dấu ống hoặc một ký tự tùy chỉnh cho cả hai phía. Nguồn mặc định là dấu phẩy, đích mặc định là tab.

  3. 3

    Chuyển đổi

    Chạy chuyển đổi; kết quả hiện bên dưới với dấu phân cách đích.

  4. 4

    Sao chép kết quả

    Sao chép văn bản đã chuyển đổi và dán vào bảng tính, cơ sở dữ liệu hoặc tập lệnh của bạn.

Bốn dấu phân cách mà bạn sẽ gặp phải

Định dạng Dấu phân cách Vị trí xuất hiện
CSV dấu phẩy Mặc định cho bảng tính tại Mỹ và hầu hết các tệp xuất từ web
TSV tab Bộ dữ liệu khoa học, trích xuất từ kho dữ liệu, dán từ Google Sheets
SSV dấu chấm phẩy Excel châu Âu (nơi dấu phẩy là dấu thập phân), kết quả xuất từ SAP
PSV dấu ống Đường ống nhật ký Unix, luồng dữ liệu tài chính, tệp dump từ máy chủ lớn đời cũ

Cách xử lý dấu ngoặc kép

RFC 4180 quy định các quy tắc đặt dấu trong định dạng CSV chung được sử dụng bởi hầu hết mọi công cụ:

  1. Các trường chứa ký tự phân cách, dòng mới hoặc ký tự ngoặc phải được đặt trong dấu ngoặc kép.
  2. Bên trong một trường được đặt trong dấu ngoặc kép, một dấu ngoặc kép theo nghĩa đen được thoát bằng cách nhân đôi nó: "Cô ấy nói ""xin chào""".
  3. Khoảng trắng phía trước và phía sau trong các trường không được đặt dấu ngoặc sẽ được giữ nguyên.

Bộ chuyển đổi này đọc một trường đặt trong dấu ngoặc kép như một khối duy nhất, nên dấu phân cách nguồn bên trong trường không làm tách dòng. Kết quả nối các trường bằng dấu phân cách đích mà không thêm dấu ngoặc kép mới; một trường chứa dấu phân cách đích sẽ tạo ra các cột thừa. Hãy kiểm tra và đặt dấu ngoặc cho các trường đó trước khi chuyển đổi.

Một giới hạn cần biết: mỗi dòng được chuyển đổi riêng lẻ, nên một trường có dấu ngoặc kéo dài nhiều dòng sẽ bị tách thành nhiều hàng.

Những lỗi phổ biến

  • Dấu phẩy trong số thập phân châu Âu. Trường giá trị “1,50” trong dữ liệu Euro được phân tách bằng dấu chấm phẩy sẽ tách thành “1” và “50” nếu bạn chuyển sang định dạng phân tách bằng dấu phẩy mà không thay dấu thập phân trước.
  • CRLF so với LF. Kết quả luôn dùng kiểu kết thúc dòng LF. Nếu hệ thống đích cần CRLF (Excel trên Windows), hãy chuyển đổi kết thúc dòng sau bước này.
  • BOM trong định dạng UTF-8. Excel cần một dấu chỉ thứ tự byte để mở các tệp CSV định dạng UTF-8 một cách chính xác. Công cụ này không thêm hoặc loại bỏ BOM; hãy xử lý bằng trình soạn thảo của bạn nếu cần.
  • Cột cuối trống. Một tệp kết thúc bằng dấu phân cách thường có cột cuối trống. Một số công cụ phân tích bỏ qua cột này, một số khác lại giữ lại; bạn nên kiểm tra trong cả hai trường hợp.

Những mẹo nhỏ

  • Sử dụng TSV cho dữ liệu có thể chứa dấu phẩy; các tab trong nội dung thực tế rất hiếm gặp.
  • Khi nghi ngờ, hãy giữ nguyên dấu ngoặc ở nguồn: một trường đặt trong dấu ngoặc kép chuyển đổi sạch sẽ ngay cả khi chứa dấu phân cách nguồn.
  • Tổ hợp mặc định từ dấu phẩy sang tab bao phủ hầu hết các chuyển đổi CSV sang TSV trong một bước.

Câu hỏi thường gặp

Không, miễn là các dấu phẩy trong trường được đặt trong dấu ngoặc kép. Bộ chuyển đổi đọc trường có dấu ngoặc như một khối duy nhất, nên dấu phẩy nhúng vẫn giữ nguyên khi nối dòng bằng dấu phân cách đích. Lưu ý dấu phân cách đích: một trường chứa nó sẽ không được đặt dấu ngoặc trong kết quả và bị tách thành các cột thừa.

Excel trên Windows mặc định ghi CRLF; còn Python ghi LF trừ khi bạn mở tệp ở chế độ nhị phân với cờ newline=''. Kết quả của bộ chuyển đổi này luôn dùng LF; hãy chuyển đổi kết thúc dòng sau đó nếu hệ thống nhận cần CRLF.

Văn bản được dán được xử lý trong một yêu cầu duy nhất, nên giới hạn thực tế là những gì trình duyệt của bạn và máy chủ của chúng tôi chấp nhận cho mỗi yêu cầu. Với các tệp rất lớn, hãy chuyển đổi theo từng phần.

Có. Văn bản bạn dán được gửi đến máy chủ của chúng tôi để thực hiện chuyển đổi. Nó không được lưu trữ và không được thêm vào liên kết của trang.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác