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:
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:32
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 csv.writer
:
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ế ,
bằng :
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: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:
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:09
SylharesylhareSylhare
4.8107 Huy hiệu vàng55 Huy hiệu bạc73 Huy hiệu Đồng7 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: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:25
jeppoo1jeppoo1jeppoo1
5628 Huy hiệu bạc18 Huy hiệu Đồng8 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:38
ToreltwiddlertoreltwiddlerTorelTwiddler
5,8882 Huy hiệu vàng31 Huy hiệu bạc39 Huy hiệu Đồng2 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:38
ToreltwiddlertoreltwiddlerWilduck
5,8882 Huy hiệu vàng31 Huy hiệu bạc39 Huy hiệu Đồng10 gold badges57 silver badges89 bronze badges
2