删除 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='')
创建 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='')