gpt4 book ai didi

python - 在 python 中,如何让 csv.DictReader 正确处理包含行返回的字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:44 32 4
gpt4 key购买 nike

我有几个 csv 文件,其中包含带换行符的字符串。这些文件将在 Excel 中打开得很好,但是当我尝试使用 csv.DictReader() 读取文件时,csv.DictReader() 似乎将字符串内的每个换行符作为新的数据行处理,而不是忽略回车在字符串中中断。

我怎样才能让下面的第二个测试像第一个测试一样通过?

#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 应该这样做:

http://docs.python.org/release/2.6.7/library/csv.html#csv.Dialect.quotechar

否则,我假设您的内容中有 unix 换行符 ('\n') 和 dos 换行符 ('\r\n') 作为行终止符。从 Python 2.6.7 开始,文档提到读者被硬编码为无论您指定什么都将它们识别为行终止符,不知道您的 Python 版本是否属于这种情况。如果是,您将必须手动预处理(可能还有后处理)您的文件以确保适当的引用或将单个 '\n' 替换为其他内容,然后在 csv 解析后执行相反的操作。

关于python - 在 python 中,如何让 csv.DictReader 正确处理包含行返回的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10850979/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com