Hãy cẩn thận khi đọc một csv có dấu phẩy theo sau là dấu cách trong Python

Kinh doanh

Trong Python, bạn có thể dễ dàng đọc và ghi các tệp csv bằng cách sử dụng mô-đun csv tiêu chuẩn.

Ví dụ: giả sử bạn có csv sau, sample.csv.

11,12,13,14
21,22,23,24
31,32,33,34

Điều này có thể được đọc như sau.

import csv

with open('data/src/sample.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# ['11', '12', '13', '14']
# ['21', '22', '23', '24']
# ['31', '32', '33', '34']

Điều bạn cần phải cẩn thận ở đây là khi có khoảng trắng sau dấu phẩy. Thông thường, không được có khoảng trắng không cần thiết sau dấu phẩy, nhưng đôi khi tôi thấy các tệp có khoảng trắng trong đó.

Trong những trường hợp như vậy, theo mặc định, khoảng trắng không bị bỏ qua và tệp được đọc nguyên trạng.

11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34

Nói cách khác, nếu bạn đọc tệp ở trên với dấu phẩy theo sau là dấu cách, kết quả sẽ như sau

with open('data/src/sample_space.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# ['11', ' 12', ' 13', ' 14']
# ['21', ' 22', ' 23', ' 24']
# ['31', ' 32', ' 33', ' 34']

Nếu bạn chỉ định nội dung sau trong csv.reader, các khoảng trắng sau dấu phẩy sẽ bị bỏ qua.
skipinitialspace=True

with open('data/src/sample_space.csv', 'r') as f:
    reader = csv.reader(f, skipinitialspace=True)
    for row in reader:
        print(row)
# ['11', '12', '13', '14']
# ['21', '22', '23', '24']
# ['31', '32', '33', '34']

Trong một ví dụ đơn giản như ở trên, bạn có thể sử dụng dải () để xóa khoảng trắng. Vấn đề là khi nó được bao quanh bởi dấu ngoặc kép như sau.

"one,one", "two,two", "three,three"

Phần được bao quanh bởi dấu ngoặc kép nên được coi là một phần tử duy nhất, nhưng nếu bỏ qua không gian = False (mặc định), nó sẽ giống như sau.

with open('data/src/sample_double_quotation.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# ['one,one', ' "two', 'two"', ' "three', 'three"']

Điều này có thể được thực hiện bằng cách đặt bỏ qua không gian không gian = True.

with open('data/src/sample_double_quotation.csv', 'r') as f:
    reader = csv.reader(f, skipinitialspace=True)
    for row in reader:
        print(row)
# ['one,one', 'two,two', 'three,three']

Điều này cũng đúng khi đọc tệp csv với read_csv () ở gấu trúc. Nếu tệp csv có khoảng trắng sau dấu phẩy, bạn có thể làm như sau.
read_csv(skipinitialspace=True)

Copied title and URL