在python中,如何让csv.DictReader正确处理包含换行符的字符串?
我有一些csv文件,其中包含带有换行符的字符串。这些文件在Excel中可以很好地打开,但当我尝试使用csv.DictReader()读入文件时,csv.DictReader()似乎会将字符串中的每一行都作为一行新数据处理,而不是忽略字符串中的回车符 我该怎么做才能让下面的第二次考试像第一次考试一样通过在python中,如何让csv.DictReader正确处理包含换行符的字符串?,python,csv,export-to-csv,Python,Csv,Export To Csv,我有一些csv文件,其中包含带有换行符的字符串。这些文件在Excel中可以很好地打开,但当我尝试使用csv.DictReader()读入文件时,csv.DictReader()似乎会将字符串中的每一行都作为一行新数据处理,而不是忽略字符串中的回车符 我该怎么做才能让下面的第二次考试像第一次考试一样通过 #csv contents this, is, a, test 1,2,u'thr\nee',4 5,6,7,8 result = [] text = """t
#csv contents
this, is, a, test
1,2,u'thr\nee',4
5,6,7,8
result = []
text = """this, is, a, test
1,2,u'three',4
5,6,7,8"""
b = StringIO(text)
reader = csv.DictReader(b)
for row in reader:
result.append(row)
self.assertEqual(2,len(result))
expected = [{'this': '1', ' test': '4', ' is': '2', ' a': "u'three'"}, {'this': '5', ' test': '8', ' is': '6', ' a': '7'}]
self.assertEqual(expected ,result)
#With a /n inside the string.
result = []
text = """this, is, a, test
1,2,u'thr\nee',4
5,6,7,8"""
b = StringIO(text)
reader = csv.DictReader(b)
for row in reader:
result.append(row)
self.assertEqual(2,len(result))
#expected = [{'this': '1', ' test': '4', ' is': '2', ' a': "u'thr\nee'"}, {'this': '5', ' test': '8', ' is': '6', ' a': '7'}]
#self.assertEqual(expected,result)
假设您的csv内容被正确引用,在实例化读卡器时指定适当的quotechar应该执行以下操作:
否则,我假设您的内容中有unix换行符('\n'),而dos换行符('\r\n')作为行终止符。从Python2.6.7开始,该文档提到,读者通过硬编码将两者识别为行术语编辑器,无论您指定什么,都不知道您的Python版本是否如此。如果是,您必须手动预处理(可能是后处理)您的文件,以确保正确引用或用其他内容替换单个'\n',然后在csv解析后执行相反操作。还有一个事实,即csv文件应以二进制模式打开。我记得最近在使用
csv
模块时遇到了问题。