即使使用有效的行终止符,Python csv库也会保留空行

即使使用有效的行终止符,Python csv库也会保留空行,python,csv,Python,Csv,我正在尝试从internet获取数据以将其保存到csv文件。 我在写入csv文件时遇到问题,库在文件中留下一个空行 数据是文本/普通格式的random.org整数 我正在使用urllib.request获取数据,我正在使用此代码获取数据并对其进行解码 req = urllib.request.Request(url, data=None, headers={ 'User-Agent': '(some text)'}) with urllib.request.urlopen(req)

我正在尝试从internet获取数据以将其保存到csv文件。
我在写入csv文件时遇到问题,库在文件中留下一个空行

数据是文本/普通格式的random.org整数
我正在使用urllib.request获取数据,我正在使用此代码获取数据并对其进行解码

req = urllib.request.Request(url, data=None, headers={
    'User-Agent': '(some text)'})

with urllib.request.urlopen(req) as response:
    html = response.read()
    encoding = response.headers.get_content_charset('utf-8')
    data = html.decode(encoding)
我使用这行代码打开csv文件:
csvfile=open('data.csv',“a”)

正在写入文件:
writer=csv.writer(csvfile,lineterminator='\n')
writer.writerows(数据)

当然,我会在最后关闭文件
我尝试过但没有帮助的事情:

  • 写入时使用(lineterminator='\n')
  • 打开文件时使用(newline=“”)
  • 定义“分隔符”、“引号”和“引号”

更新答案

如果在创建要写入
数据
列表的列表时,将其添加为列表,使
数据
成为列表列表,然后将行分隔符设置为
'\n'
,则应该可以使用。下面是我用来测试的工作代码

import csv
import random

csvfile = open('csvTest.csv', 'a')
data = []
for x in range(5):
    data.append([str(random.randint(0, 100))])

writer = csv.writer(csvfile, lineterminator = '\n')
writer.writerows(data)
csvfile.close()
它输出


可能重复的@hfbronning提到了这条新行=“”没有帮助好的,您正在使用Python 2.x吗?如果我在使用Python3.6.1的文章中没有提到您的问题,您可能需要提供更多的代码来解释。在代码方面,我没有太多要分享的内容,但我会更新我的urllib请求部分。请您将脚本/视图的相关部分添加到您的问题中好吗?另外,这是使用默认的行终止符完成的。我使用的是二进制模式,然后我遇到了将str转换为字节的问题(错误或写入错误数据,如48和49),有帮助吗?您可以将方言设置为
excel选项卡
,这将导致数字>9被一个选项卡隔开,但它们将正确显示在excel中。
writer=csv.writer(csvfile,方言='excel tab')
此外,不幸的是,使用二进制模式也没有什么帮助。这是可行的,但它始终使用第一次获取的相同值,如:(0,0,0,0,0),我想自己解决。谢谢