删除 XML 文件中的空行

Delete empty row in XML File

创建 XML 文件时,它总是为我创建空行。 此代码如下所示:

for row in tbody.find_elements_by_xpath('./tr'):
    itemsEmployee = row.find_elements_by_xpath('./td')
    fileWriter.writerow([itemsEmployee[1].text, itemsEmployee[5].text, itemsEmployee[2].text, itemsEmployee[3].text,
                         itemsEmployee[4].text, itemsEmployee[6].text, itemsEmployee[7].text, itemsEmployee[8].text])

首先,我不知道为什么会出现空行。但无论如何。

我现在想删除空行并保存 XML。 (在新文件中)

我的尝试如下:

def deleteEmptyRowsInXML():
    input = open('../data/employees_csv.csv', 'rb')
    output = open('../data/employees.csv', 'wb')
    writer = csv.writer(output)
    for row in csv.reader(input):
        if row:
            writer.writerow(row)
    input.close()
    os.remove('../data/employees_csv.csv')
    output.close()

我也想要同一个文件中的解决方案。

得到错误:

_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

在这一行中:

for row in csv.reader(input):

错误消息说文件可能不是以文本模式打开的。

实际上您是以二进制模式打开它的:“rb”的意思是“以二进制模式读取文件”。而“wb”的意思是“以二进制模式写入文件”

所以改成这样:

input = open('../data/employees_csv.csv', 'r')
output = open('../data/employees.csv', 'w')

但是您也可能会遇到其他错误。目前,我不能说更多,因为我们没有可重现的例子。但这可能足以改变我指出的路线。

csv 编写器希望其基础文件使用 newline='' 打开。基本原理是 RFC 4180 要求 csv 文件应该有 '\r\n' 作为独立于生成它的系统的行尾。所以 csv 模块明确地添加了 \r\n,但是如果你忘记了 newline='',你会得到每一行的空行。

所以应该是:output = open('../data/employees.csv', 'w', newline='')