Python不识别csv文件中的新行

问题描述:

我试图发送一个csv给bigquery。文件中的列用#分隔,换行符用\ n分隔。但我从BigQuery的得到这个错误:Python不识别csv文件中的新行

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的文件中的新行。我怎样才能解决这个问题?

+0

'\ n'只是表示换行符的一种方式。你将不得不在你的文件中使用实际的换行符。 –

+0

该文件是一个logstash输出。我不知道如何从logstash输出一个真实的新行 –

+1

这可能是它实际上输出了当打印字符串时输入为\ n,读作'\ n'。尝试'output.replace('\\ n','\ n')' –

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