Python 无法识别 csv 文件中的新行

Posted

技术标签:

【中文标题】Python 无法识别 csv 文件中的新行【英文标题】:Python not recognizing new lines in csv files 【发布时间】:2017-04-10 02:27:03 【问题描述】:

我正在尝试将 csv 发送到 bigquery。文件中的列用# 分隔,换行符用\n 分隔。但我从 BigQuery 收到此错误:

RuntimeError: [u'reason': u'invalid', u'message': u'Too many errors encountered.', u'reason': u'invalid', u'message': u'Too many values in row starting at position: 0.', u'location': u'file-00000000']

这是我的代码:

bigquery_client = bigquery.Client.from_service_account_json(CREDENTIALS_BIGQUERY, 'xxx-yyy')

dataset_name = 'pixel_logs'
table_name = 'full_logs'
source_file_name = '/tmp/logstash-bq/text.csv'
dataset = bigquery_client.dataset(dataset_name)
table = dataset.table(table_name)

table.reload()

with open(source_file_name,'rb') as source_file:
    job = table.upload_from_file(source_file,encoding='UTF-8'
        ,source_format='text/csv'
        ,field_delimiter='#'
        ,allow_quoted_newlines=True)

这是我的文件:

2017-04-10T01:40:24.329Z#9decaf95-20a5-428e-a3ca-50485edb9f9f#1-fg4fuqed-j0hzl5q2#product_pageview#1#http://dev.xxx.com.br/xxx/#http://dev.xxx.com.br/#1491758180677#UTF-8#1600x900#1600x236#24#xxx%#Chrome%2057#false#Mozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_3)%20AppleWebKit/537.36%20(Khtml,%20like%20Gecko)%20Chrome/57.0.2987.133%20Safari/537.36\n2017-04-10T01:40:45.069Z#9decaf95-20a5-428e-a3ca-50485edb9f9f#1-fg4fuqed-j0hzl5q2#product_pageview#1#http://dev.xxx.com.br/#http://dev.xxx.com.br/#1491758180677#UTF-8#1600x900#1600x236#24#xxx#Chrome%2057#false#Mozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_3)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/57.0.2987.133%20Safari/537.36\n

Python 和 BigQuery 未将 \n 识别为文件中的新行。我该如何解决这个问题?

【问题讨论】:

\n 只是表示换行符的一种方式。您将不得不在文件中使用实际的换行符。 该文件是一个logstash输出。我不知道如何从 logstash 输出为真正的新行 可能是它实际上输出了\\n,当你打印字符串时它读作\n。试试output.replace('\\n', '\n') 【参考方案1】:

csv 是从 logstash 输出创建的。 我刚刚修复了logstash csv输出。 Python 不是问题。

【讨论】:

以上是关于Python 无法识别 csv 文件中的新行的主要内容,如果未能解决你的问题,请参考以下文章

将 csv 文件导入 python 后,为啥我的某些数据列在我的数据框中无法识别

WEKA 无法识别 .csv 文件中的不同属性

Python无法识别目录os.path.isdir()[重复]

我的 CSV 文件带有双引号括起来的字段 - 无法识别数值“12131”

在python的csv文件中添加新行输出

python列表到csv文件,每个项目都在新行中