Chuyển đổi Excel sang tệp văn bản được phân tách bằng đường ống Python

nguyên tửxkai
Người Pháp ngớ ngẩn

Bài viết. 30

Chủ đề. 8

Đã tham gia. Tháng 2 năm 2021

Danh tiếng. 0

Feb-04-2022, 11. 06 giờ chiều

Xin chào, tôi đang cố gắng thêm một số cột có giá trị như chỉ mục nhưng tôi gặp lỗi ở dòng 16. Hy vọng bất cứ ai có thể giúp đỡ. Thanks

import csv
import glob

header = ['NAME','ADDRESS','PHONE','EMAIL']

# with pipe delimter data
with open("datafile.txt", mode='r') as text_pipe:
    reader_pipe = csv.reader(text_pipe, delimiter = '|')
   
    with open("output.csv", 'w', newline = '') as file_comma:
        writer_delim = csv.writer(file_comma, delimiter = ',')
        writer_delim.writerow(header) # add header
        record_index = 1 # index sequence
        
        for row in reader_pipe: # loop to read file
            writer_delim.writerow(record_index,row) # print value in each line
            record_index = record_index + 1

Error:

Exception has occurred: TypeError writerow() takes exactly one argument (2 given) writer_delim.writerow(record_index,row) # print value in each line

Hồi đáp

Tìm thấy

Hồi đáp

bát tràng
Đà giám mục

Bài viết. 1.523

Chủ đề. 3

Đã tham gia. Tháng 3 năm 2020

Danh tiếng. 163

05-02-2022, 12. 08 AM (Bài đăng này đã được sửa đổi lần cuối. Feb-05-2022, 12. 08 AM bởi bowlofred. )

writerow() nhận chính xác một đối số. toàn bộ hàng bạn muốn viết/nối thêm vào csv của bạn

Bạn đã vượt qua hai đối tượng. Nếu bạn muốn thêm record_index vào CSV của mình, hãy sửa đổi trực tiếp row để đưa giá trị đó vào hàng. Sau đó viết hàng đó ra

Một số điều khác tôi có thể đề nghị
Bạn không cần hai ngữ cảnh riêng biệt để mở hai tệp. Nếu bạn định thoát ngay lập tức nếu một trong hai lần mở không thành công và bạn đã hoàn thành chúng cùng một lúc, thì bạn có thể muốn đặt chúng vào cùng một with và tiết kiệm một số khoảng trống thụt lề

Vì bạn chỉ đang đếm trên một vòng lặp, hãy cân nhắc sử dụng enumerate() cho bộ đếm thay vì quản lý của riêng bạn

import csv
import glob

header = ['NAME','ADDRESS','PHONE','EMAIL']

# with pipe delimter data
with open("datafile.txt", mode='r') as text_pipe, open("output.csv", 'w', newline= '') as file_comma:
    reader_pipe = csv.reader(text_pipe, delimiter = '|')
    writer_delim = csv.writer(file_comma, delimiter = ',')

    writer_delim.writerow(header) # add header

    for record_index, row in enumerate(reader_pipe, 1): # loop to read file
        row.insert(0, record_index)
        writer_delim.writerow(row) # print value in each line

BashBedlam và Atomxkai thích bài đăng này

Hồi đáp

Tìm thấy

Hồi đáp

nguyên tửxkai
Người Pháp ngớ ngẩn

Bài viết. 30

Chủ đề. 8

Đã tham gia. Tháng 2 năm 2021

Danh tiếng. 0

05-02-2022, 12. 31 giờ sáng (Bài đăng này đã được sửa đổi lần cuối. Feb-05-2022, 12. 31 giờ sáng bởi Atomxkai. )

(05-02-2022, 12. 08 giờ sáng) bowlofred Đã viết. writerow() nhận chính xác một đối số. toàn bộ hàng bạn muốn viết/nối thêm vào csv của bạn.

Bạn đã vượt qua hai đối tượng. Nếu bạn muốn thêm record_index vào CSV của mình, hãy sửa đổi trực tiếp row để đưa giá trị đó vào hàng. Sau đó viết hàng đó ra

Một số điều khác tôi có thể đề nghị
Bạn không cần hai ngữ cảnh riêng biệt để mở hai tệp. Nếu bạn định thoát ngay lập tức nếu một trong hai lần mở không thành công và bạn đã hoàn thành chúng cùng một lúc, thì bạn có thể muốn đặt chúng vào cùng một with và tiết kiệm một số khoảng trống thụt lề

Vì bạn chỉ đang đếm trên một vòng lặp, hãy cân nhắc sử dụng enumerate() cho bộ đếm thay vì quản lý của riêng bạn

import csv
import glob

header = ['NAME','ADDRESS','PHONE','EMAIL']

# with pipe delimter data
with open("datafile.txt", mode='r') as text_pipe, open("output.csv", 'w', newline= '') as file_comma:
    reader_pipe = csv.reader(text_pipe, delimiter = '|')
    writer_delim = csv.writer(file_comma, delimiter = ',')

    writer_delim.writerow(header) # add header

    for record_index, row in enumerate(reader_pipe, 1): # loop to read file
        row.insert(0, record_index)
        writer_delim.writerow(row) # print value in each line

Nó hoạt động hoàn hảo bowlofred. Cảm ơn bạn

những gì tôi học được
1. viết cùng 'với'
2. chức năng 'chèn'
3. Tôi đã thử 'liệt kê' trước đây nhưng vẫn chưa thấm vào đâu cho đến bây giờ


câu hỏi thêm
1. Vì vậy, nếu tôi muốn chèn các giá trị khác và thêm các cột hoặc trường mới, tôi chỉ có thể sử dụng chức năng chèn và sử dụng vị trí?
2. Bạn có gợi ý làm thế nào để thực sự hiểu các loại chức năng này hay chỉ cần thực hành?

Hồi đáp

Tìm thấy

Hồi đáp

bát tràng
Đà giám mục

Bài viết. 1.523

Chủ đề. 3

Đã tham gia. Tháng 3 năm 2020

Danh tiếng. 163

Feb-05-2022, 01. 10 giờ sáng

(05-02-2022, 12. 31 giờ sáng) atomxkai Đã viết. 1. Vì vậy, nếu tôi muốn chèn các giá trị khác và thêm các cột hoặc trường mới, tôi chỉ có thể sử dụng chức năng chèn và sử dụng vị trí?

Đúng. Bạn cần cung cấp cho csvwriter một đối tượng với số lượng trường chính xác. Vì danh sách của bạn là một danh sách nên tôi đã sử dụng phương pháp

Error:

Exception has occurred: TypeError writerow() takes exactly one argument (2 given) writer_delim.writerow(record_index,row) # print value in each line
2 để sửa đổi nó, nhưng bạn có thể sử dụng bất kỳ thao tác nào khác (tạo một danh sách mới với khả năng hiểu, lát,. phương thức append(), v.v. )

Điều này khá đơn giản, nhưng bạn phải theo dõi và đảm bảo mọi thứ luôn được thực hiện theo đúng trình tự

Trích dẫn. 2. Bạn có gợi ý làm thế nào để thực sự hiểu các loại chức năng này hay chỉ cần thực hành?

Khá nhiều chỉ cần thực hành. Không có gì sai khi cố gắng và có một cách kém hiệu quả hơn hoặc ít thành ngữ hơn lúc đầu. Tôi thấy hướng dẫn tham khảo choáng ngợp khi lần đầu tiên học một ngôn ngữ. Tôi mong đợi một số điều cơ bản nhất định sẽ ở đó. Chỉ sau khi sử dụng một thời gian, tôi mới cảm thấy thoải mái và tôi có thể hiểu làm thế nào một số chi tiết lại ăn khớp với nhau

Atomxkai thích bài viết này

Hồi đáp

Tìm thấy

Hồi đáp

nguyên tửxkai
Người Pháp ngớ ngẩn

Bài viết. 30

Chủ đề. 8

Đã tham gia. Tháng 2 năm 2021

Danh tiếng. 0

Feb-11-2022, 12. 38 giờ sáng

(05-02-2022, 01. 10 giờ sáng) bowlofred Đã viết.
(05-02-2022, 12. 31 giờ sáng) atomxkai Đã viết. 1. Vì vậy, nếu tôi muốn chèn các giá trị khác và thêm các cột hoặc trường mới, tôi chỉ có thể sử dụng chức năng chèn và sử dụng vị trí?

Đúng. Bạn cần cung cấp cho csvwriter một đối tượng với số lượng trường chính xác. Vì danh sách của bạn là một danh sách nên tôi đã sử dụng phương pháp

Error:

Exception has occurred: TypeError writerow() takes exactly one argument (2 given) writer_delim.writerow(record_index,row) # print value in each line
2 để sửa đổi nó, nhưng bạn có thể sử dụng bất kỳ thao tác nào khác (tạo một danh sách mới với khả năng hiểu, lát,. phương thức append(), v.v. )

Điều này khá đơn giản, nhưng bạn phải theo dõi và đảm bảo mọi thứ luôn được thực hiện theo đúng trình tự

Trích dẫn. 2. Bạn có gợi ý làm thế nào để thực sự hiểu các loại chức năng này hay chỉ cần thực hành?

Khá nhiều chỉ cần thực hành. Không có gì sai khi cố gắng và có một cách kém hiệu quả hơn hoặc ít thành ngữ hơn lúc đầu. Tôi thấy hướng dẫn tham khảo choáng ngợp khi lần đầu tiên học một ngôn ngữ. Tôi mong đợi một số điều cơ bản nhất định sẽ ở đó. Chỉ sau khi sử dụng một thời gian, tôi mới cảm thấy thoải mái và tôi có thể hiểu làm thế nào một số chi tiết lại ăn khớp với nhau

Thực sự tuyệt vời, cảm ơn một lần nữa

Hồi đáp

Tìm thấy

Hồi đáp

Làm cách nào tôi có thể lưu tệp Excel dưới dạng tệp được phân tách bằng đường ống?

Duyệt đến thư mục mà bạn muốn lưu tệp mới trong cửa sổ “Save As”. Nhập tên cho tệp định dạng được phân cách bằng dấu sổ đứng mới trong trường “Tên tệp”. Nhấp vào danh sách thả xuống “Lưu dưới dạng” và chọn tùy chọn “CSV (Được phân cách bằng dấu phẩy)”. Nhấp vào nút “Lưu”

Làm cách nào để chuyển đổi XLSX sang CSV được phân tách bằng ống?

csv bằng các bước thủ công như thế này. Goto bảng điều khiển -> Khu vực và Ngôn ngữ -> Cài đặt bổ sung -> cập nhật trường phân tách danh sách bằng đường ống ". ". mở mẫu. xlsx -> lưu dưới dạng -> từ trình đơn thả xuống, chọn lưu dưới dạng loại CSV (Phân cách bằng dấu phẩy)(*