从excel CSV读取和向anoth写入的问题

2024-04-29 16:14:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试过一些东西,每次都会遇到不同的错误。首先,我使用'r''w'选项进行读写,但这会导致csv在excel中查看时在实际行之间有空行。

所以,我发现我必须用'rb''wb'来读和写。但是,现在我得到了错误:_csv.Error iterator should return strings, not bytes (did you open the file in text mode?)

这是我的代码:

def readLines():
    r = csv.reader(open('test.csv', "rb"), dialect="excel")
    return [l for l in r] #causes the error

def writeFile(lines):
    resultFile = open('output.csv', 'wb')
    wr = csv.writer(resultFile, dialect='excel')
    wr.writerows(lines)

我对lines对象做了一些修改,要求它们是字符串。我这样做对吗?


Tags: csvtheinreturndef选项错误open
3条回答

如果您的文本带有重音符号或使用英语以外的其他语言,则可能需要从the Python Library standard中选择正确的编码。有些文本编辑器允许您了解特定文件的编码。我和短信管理员一起发现的。因此,读取带有重音符号的文件(西班牙语)的正确Python代码是:

import csv
def imp_csv(ruta):
    with open(ruta,'rt', newline='', encoding="mac_roman") as csvfile:
        r = csv.reader(csvfile, dialect='excel')
        for row in r:
            print(','.join(row))

尝试以文本模式打开文件:

r = csv.reader(open('test.csv', "rt"), dialect="excel")

resultFile = open('output.csv', 'wt')

问题是我没有设置新行属性。

以下是我的更新代码,现在正在工作:

def readLines():
    r = csv.reader(open('test.csv', "rt", newline=''), dialect="excel")
    return [l for l in r]

def writeFile(lines):
    resultFile = open('output.csv', 'wt', newline='')
    wr = csv.writer(resultFile, dialect='excel')
    wr.writerows(lines)

相关问题 更多 >