2010-06-06 29 views
12

Ai đó có thể cung cấp cách hiệu quả để kiểm tra xem tệp có định dạng CSV bằng Python không?Kiểm tra xem tệp có định dạng CSV với Python

+1

Chào mừng bạn đến với stackoverflow. Câu hỏi của bạn có thể sử dụng chi tiết hơn. Là một starter, bạn có thể vui lòng xác định những gì bạn có nghĩa là "định dạng csv?" Bạn sẽ cần phải xác định một cách cẩn thận định dạng này. Có tồn tại ký tự thoát, dấu bình luận hoặc ký tự ngoặc kép ở định dạng này không? Nếu câu hỏi này là bài tập về nhà, vui lòng thêm thẻ có tên là "bài tập về nhà" để các câu trả lời có thể cung cấp cho bạn loại hướng dẫn phù hợp. –

+1

Ý tôi là trên tệp CSV Giá trị được phân tách bằng dấu phẩy, hãy xem http://en.wikipedia.org/wiki/Comma-separated_values ​​để biết thêm chi tiết.; – Joe

+1

Nếu bằng csv 'giá trị được phân cách bằng dấu phẩy' có nghĩa là, thì không có standart của định dạng đó. – Max

Trả lời

0

Python có số csv module, vì vậy bạn có thể thử phân tích cú pháp dưới nhiều loại phương ngữ khác nhau.

-3

Bạn cần suy nghĩ rõ ràng về những gì bạn cho là tệp CSV.

Ví dụ: loại ký tự nào có thể xảy ra giữa dấu phẩy. Nó chỉ là văn bản? Nó có thể là các ký tự Unicode không? Mỗi dòng có cùng số dấu phẩy không?

Không có định nghĩa nghiêm ngặt về tệp CSV mà tôi biết. Thông thường, văn bản ASCII của nó được phân tách bằng dấu phẩy và mỗi dòng có cùng số dấu phẩy và được chấm dứt bởi trình kết thúc dòng của nền tảng của bạn.

Dù sao, khi bạn trả lời các câu hỏi ở trên, bạn sẽ cách xa hơn một chút để biết cách phát hiện khi tệp là tệp CSV.

22

Bạn có thể thử một số nội dung như sau, nhưng chỉ vì bạn nhận được một phương ngữ từ csv.Sniffer thực sự sẽ không đủ để đảm bảo bạn có tài liệu CSV hợp lệ.

csv_fileh = open(somefile, 'rb') 
try: 
    dialect = csv.Sniffer().sniff(csv_fileh.read(1024)) 
    # Perform various checks on the dialect (e.g., lineseparator, 
    # delimiter) to make sure it's sane 

    # Don't forget to reset the read position back to the start of 
    # the file before reading any entries. 
    csv_fileh.seek(0) 
except csv.Error: 
    # File appears not to be in CSV format; move along 
+0

* "... sẽ không đủ để đảm bảo ..." *: Vâng. Không cung cấp phương ngữ, tôi đã phát hiện tệp .ZIP dưới dạng CSV hợp lệ, với @ làm dấu phân tách – alanjds

-3

Hãy thử phân tích cú pháp dưới dạng CSV và xem bạn có gặp lỗi hay không.

Các vấn đề liên quan