我从一天起就被一个奇怪的问题困住了。我有一个csv文件,我需要导入到我的配置单元表。但是,csv文件在字符串之间嵌入了换行符。由于文件很大,我无法使用文本编辑器替换'\n'字符。
我写了一个python程序来帮助我清理文件。我从csv文件中读取每一行,如果遇到任何换行符,我会用空格替换它。下面是我的程序。
# -*- coding: utf-8 -*-
import csv
import sys
file = open("team_contacts_cleaned.csv","w")
with open('team_contacts.csv') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
stripped = [col.replace('\n', '') for col in row]
file.write(','.join(stripped))
file.write('\n')
file.close()
print 'Done'
一旦我有了这个清理文件,我看到行计数匹配预期。当我在字符串上grep文件时,我知道这是打破记录的,确切的一行被打印在控制台中,但是,我在输出中没有看到那一行。
如。
原始文件
cat team_contacts.csv | grep -A4 'Yennai Nambi'
,,,,,11/30/2017 11:45 AM UTC,,,,12/29/2017 11:51 AM UTC,,"Yennai Nambi Vandhavarai Yaemaatra Maattaen ;
Verum Yaeniyaay Naanirundhu Yaemaatra Maattaen ;
Naan Uyir Vaazhndhaal Ingaedhaan ;
Ooadivida Maattaen .",0,
已清理文件
cat team_contacts_cleaned.csv | grep 'Naan Uyir Vaazhndhaal Ingaedhaan'
,,,,,11/30/2017 11:45 AM UTC,,,,12/29/2017 11:51 AM UTC,,Yennai Nambi Vandhavarai Yaemaatra MaOoadivida Maattaen .,0,
它看起来像数据被删除时,我猫的文件,但grep能够准确地定位字符串,这意味着字符串仍然存在,但为什么它没有出现?
现在,当我把这个清理过的文件移到配置单元时,它再次中断,数据显示如下
Verum Yaeniyaay Naanirundhu Yaemaatra Maattaen ; NULL NULL NULL NULL NULL NULLNULL
Naan Uyir Vaazhndhaal Ingaedhaan ; NULL NULL NULL NULL NULL NULL NULL NULLNULL
我错过了什么?
在编写python代码之前,我甚至尝试过一个gawk程序,我也遇到了同样的问题。
gawk -v RS='"' 'NR % 2 == 0 { gsub(/\n/, "") } { printf("%s%s", $0, RT) }' team_contacts.csv > team.csv
1条答案
按热度按时间3hvapo4f1#
我解决了这个问题。当我把文件分成几部分时,我犯了这个错误
_csv.error:未加引号的字段中出现新行字符
下面的链接帮助我解决了这个问题。https://stackoverflow.com/a/32827068/3538426
这个可以关闭。更新了代码
@agc您的解决方案将无法工作,因为它将删除所有新行。