Hướng dẫn delimiter csv python - dấu phân cách csv python

Tôi nghi ngờ đây là một vấn đề phổ biến, nhưng tôi không thể xác định được câu trả lời. Tôi đang cố gắng xóa tất cả các dấu phẩy khỏi tệp CSV và thay thế chúng bằng các dấu chấm. Tôi thường sử dụng SED hoặc VI cho việc này, nhưng tôi cần sử dụng một triển khai Python thuần túy. Đây là những gì tôi đã nghĩ ra cho đến nay:

Nội dung chính ShowShow

  • Làm cách nào để thay đổi dấu phân cách CSV của tôi?
  • Làm cách nào để sửa đổi tệp CSV trong Python?
  • Làm cách nào để thay đổi văn bản phân cách của tôi?
  • Làm cách nào để mở tệp CSV với dấu phân cách phân cách chính xác?

import csv

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile)
        for rows in reader:
            for parsed_item in rows:
                parsed_item = rows.replace(',', ':') # I can't do this with a list!
                writer.writerow(parsed_item)

Bất cứ ai có thể giúp tôi làm thế nào để làm điều này? Cảm ơn trước sự giúp đỡ của bạn.

Hỏi ngày 8 tháng 7 năm 2011 lúc 20:32Jul 8, 2011 at 20:32Jul 8, 2011 at 20:32

Hướng dẫn delimiter csv python - dấu phân cách csv python

2

Câu trả lời dễ hơn bạn nghĩ. Bạn chỉ cần đặt dấu phân cách cho

import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)
0:

import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)

Bạn đang cố gắng thay thế

import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)
1 bằng
import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)
2 sẽ không làm bất cứ điều gì vì hàng đã được xử lý bởi

import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)
0.

Đã trả lời ngày 8 tháng 7 năm 2011 lúc 20:37Jul 8, 2011 at 20:37Jul 8, 2011 at 20:37

3

Nếu bạn đang tìm cách đọc một CSV với dấu phân cách dấu phẩy và viết nó vào một tệp khác với các dấu phân cách bán nguyệt. Tôi nghĩ rằng một cách đơn giản hơn sẽ là:another file with semicolon delimiters. I think a more straightforward way would be:another file with semicolon delimiters. I think a more straightforward way would be:

reader = csv.reader(open("input.csv", "r"), delimiter=',')
writer = csv.writer(open("output.csv", 'w'), delimiter=';')
writer.writerows(reader)

Tôi thấy ví dụ này dễ hiểu hơn nhiều so với

import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)
1. Ngoài ra, nếu bạn làm việc với tệp bằng dấu phẩy và dấu chấm phẩy làm dấu phân cách. Bạn có thể sử dụng sniffer của tệp CSV để phát hiện dấu phân cách nào được sử dụng trước khi đọc tệp (ví dụ trong liên kết).

Ngoài ra, nếu bạn muốn viết lại trong cùng một tệp, hãy kiểm tra câu trả lời StackoverFlow này.

Đã trả lời ngày 21 tháng 3 năm 2018 lúc 19:09Mar 21, 2018 at 19:09Mar 21, 2018 at 19:09

SylharesylhareSylhareSylhare

4.8107 Huy hiệu vàng55 Huy hiệu bạc73 Huy hiệu Đồng7 gold badges55 silver badges73 bronze badges7 gold badges55 silver badges73 bronze badges

3

Tôi sẽ xây dựng câu trả lời của mình trên câu trả lời của @Sylhare. Trong Python3, chế độ 'U' không được chấp nhận. Vì vậy, giải pháp sau đây đã làm việc cho tôi:

import csv

reader = csv.reader(open("input.csv", newline=None), delimiter=',')
writer = csv.writer(open("output.csv", 'w'), delimiter=':')
writer.writerows(reader)

Đã trả lời ngày 22 tháng 5 năm 2020 lúc 19:31May 22, 2020 at 19:31May 22, 2020 at 19:31

2

Tôi đang viết các tệp CSV từ dữ liệu RAW của JSON và nhận thấy rằng mô -đun

import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)
2 cũng hỗ trợ các trình phân cách khác nhau. Thí dụ:
with open('file_1.csv', 'w', encoding="utf-8-sig", newline = '') as myfile:
    wr = csv.DictWriter(myfile, fieldnames = table_fields, delimiter=';')
    wr.writeheader()
    wr.writerows(# my data #)

Đã trả lời ngày 28 tháng 2 năm 2020 lúc 11:25Feb 28, 2020 at 11:25Feb 28, 2020 at 11:25

jeppoo1jeppoo1jeppoo1jeppoo1

5628 Huy hiệu bạc18 Huy hiệu Đồng8 silver badges18 bronze badges8 silver badges18 bronze badges

Giả sử rằng CSV được phân định dấu phẩy và bạn muốn thay thế dấu phẩy trong mỗi mục, tôi tin rằng vấn đề đang thay thế sai mục:

for rows in reader:
    for parsed_item in rows:
        parsed_item = parsed_item.replace(',', ':') # Change rows to parsed_item
        writer.writerow(parsed_item)

Đã trả lời ngày 8 tháng 7 năm 2011 lúc 20:38Jul 8, 2011 at 20:38Jul 8, 2011 at 20:38

ToreltwiddlertoreltwiddlerTorelTwiddlerTorelTwiddler

5,8882 Huy hiệu vàng31 Huy hiệu bạc39 Huy hiệu Đồng2 gold badges31 silver badges39 bronze badges2 gold badges31 silver badges39 bronze badges

Nếu bạn chỉ thay thế dấu phẩy bằng dấu chấm, bạn không cần phải sử dụng trình phân tích cú pháp CSV.

with open("file.csv", 'r') as f:
    with open("temp.csv", 'w') as t:
        for lines in f:
            new_line = line.replace(",",":")
            t.write(new_line)

Thông báo duy nhất là bạn không thể có dấu phẩy ở nơi khác trong tệp CSV.

Đã trả lời ngày 8 tháng 7 năm 2011 lúc 20:38Jul 8, 2011 at 20:38Jul 8, 2011 at 20:38

ToreltwiddlertoreltwiddlerTorelTwiddlerWilduck

5,8882 Huy hiệu vàng31 Huy hiệu bạc39 Huy hiệu Đồng2 gold badges31 silver badges39 bronze badges10 gold badges57 silver badges89 bronze badges

2

Làm cách nào để thay đổi dấu phân cách CSV của tôi?

Nếu bạn chỉ thay thế dấu phẩy bằng dấu chấm, bạn không cần phải sử dụng trình phân tích cú pháp CSV..

Thông báo duy nhất là bạn không thể có dấu phẩy ở nơi khác trong tệp CSV.

ToreltwiddlertoreltwiddlerWilduck

5,8882 Huy hiệu vàng31 Huy hiệu bạc39 Huy hiệu Đồng10 gold badges57 silver badges89 bronze badges

Làm cách nào để sửa đổi tệp CSV trong Python?

Tệp CSV, Excel phân tách các giá trị với bộ phân cách danh sách mặc định của bạn ....

Nhấp vào Tệp> Tùy chọn> Nâng cao ..

Trong các tùy chọn chỉnh sửa, hãy xóa hộp kiểm Hệ thống sử dụng hệ thống ..

Thay đổi bộ phân cách thập phân mặc định ..

Phương pháp 1..

Làm cách nào để thay đổi văn bản phân cách của tôi?

Nhập mô -đun ..after you choose the text file and click Import, choose a character to use from the list under Delimiter.

Làm cách nào để mở tệp CSV với dấu phân cách phân cách chính xác?

Bất cứ ai có thể giúp tôi làm thế nào để làm điều này? Cảm ơn trước sự giúp đỡ của bạn..

Hỏi ngày 8 tháng 7 năm 2011 lúc 20:32Jul 8, 2011 at 20:32

Câu trả lời dễ hơn bạn nghĩ. Bạn chỉ cần đặt dấu phân cách cho

import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)
0:

Bạn đang cố gắng thay thế

import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)
1 bằng
import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)
2 sẽ không làm bất cứ điều gì vì hàng đã được xử lý bởi