如何在python中解析和打印CSV数据中的字段

如何在python中解析和打印CSV数据中的字段,python,csv,Python,Csv,我正在处理一个将文本导出为CSV类型数据的应用程序。文本被分成几个字段,在这些字段中有一个硬返回。我一直在尝试使用pythonscsv来恢复文本 这是文本的一个示例: {"This is an example", "of what I what I have to deal with. ", "Please pick up th following:", "eggs", "milk", "Thanks for picking groceries up for me"} 阅读此输出文本的最佳方

我正在处理一个将文本导出为CSV类型数据的应用程序。文本被分成几个字段,在这些字段中有一个硬返回。我一直在尝试使用pythonscsv来恢复文本

这是文本的一个示例:

{"This is an example", "of what I what I have to deal with.  ", "Please pick up th following:", "eggs", "milk", "Thanks for picking groceries up for me"}
阅读此输出文本的最佳方式是什么:

我尝试了很多方法,但都不太正确

以下是我目前正在做的事情:

import csv
import xlrd
book = xlrd.open_workbook("book1.xls")
sh = book.sheet_by_index(0)
cat = 'Mister Peanuts'

for r in range(sh.nrows)[0:]:
    cat_name = sh.cell_value(rowx=r, colx=1)
    cat_behavior = sh.cell_value(rowx=r, colx=5)

    if sh.cell_value(rowx=r, colx=1) == cat :       
        csv_reader = csv.reader( ([ cat_behavior ]), delimiter=',') 
        for row in csv_reader:

                for item in row:
                        item = item.strip()
                        print(item)
            pass    
    pass
因此,为cat_行为返回的实际单元格值如下所示:

['{"Mister Peanut spent 3.2 hours with {bojangles} fighting', '  "', ' "litter box was cleaned, sanitized and replaced "', ' " Food was replensished - with the best food possible"', ' ', ' "technician - don johnson performed all tasks"}']

我现在正试图通过csv.reader执行上述操作,对其进行清理并将其打印到文本文件中。我现在正在尝试使(项目)看起来正常。

您需要查看以将数据导出到csv,而不是
csv.reader

编辑:问题的正文和标题冲突。使用
csv.reader
是正确的。您可以在for循环中使用
print
,以获得所需的结果

import csv
with open('test') as f:
    for row in csv.reader(f):
        for item in row:
            item=item.strip('{} "')
            print(item)

从字符串的左端或右端删除指定的字符

请解释您必须从何开始。

x = {"This is an example", ......., "Thanks for picking groceries up for me"}
这看起来像一个集。然后将
[x]
作为csv.reader的第一个参数传递!!这是行不通的:

[Python 2.7]
>>> import csv
>>> x = {"foo", "bar", "baz"}
>>> rdr = csv.reader([x]) # comma is the default delimiter
>>> list(rdr)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: expected string or Unicode object, set found
>>>
[Python 2.7]
>>>导入csv
>>>x={“foo”,“bar”,“baz”}
>>>rdr=csv.reader([x])#逗号是默认的分隔符
>>>列表(rdr)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:应为字符串或Unicode对象,已找到集合
>>>
您说“将文本导出为CSV类型数据的应用程序”-“导出”是什么意思?如果它的意思是“写入文件”,请(如果你不能遵循遍布网络的示例)给我们一个文件转储文件来查看。如果它的意思是“方法/函数返回python对象”,请执行
print(repr(python_object))
并使用打印输出的副本/粘贴更新您的问题

您有哪些关于应用程序输出的文档

编辑评论和问题后更新

您说单元格值“returned”是:

[“{”花生先生花了3.2个小时与{bojangles}打架',“,”垃圾箱被清理、消毒和更换“,”食物被补充-尽可能用最好的食物“,”,“技术员-唐·约翰逊执行所有任务”}]

这看起来像是您在通过CSV mangle传递实际数据后打印的内容,而不是xlrd提取的原始值,它肯定不是列表;它将是单个unicode对象

如果您以前没有读过:请解释您要从什么开始。

x = {"This is an example", ......., "Thanks for picking groceries up for me"}
您认为有可能做到以下几点:

(1) 请执行
打印(repr(cat_behavior))
并使用打印输出的副本/粘贴更新您的问题


(2) 请说明有关创建Excel文件的应用程序的文档。

非常感谢。这确实帮助我向前迈进。问题是CSV实际上可能有扭曲的括号和引号,这可能是个问题。谢谢。我是python的新手,但如果有嵌套的引号或花括号,这不会导致问题吗?这是一种不幸的可能性。如果您有嵌套的内容,那么不要使用此方法。CSV文件中不应该有太多嵌套。我正在使用您的xlrd从电子表格中提取单元格,然后将这些单元格值打印到一个有人可以实际读取的文本文件中。我需要打印的一个单元格包含类似CSV的数据。所以,在将文本打印到文本文件之前,我正在尝试使文本可读。我已经进行了编辑,以显示我对单元格中的一段实际文本的实际操作。谢谢,蒂姆。我现在非常接近使用这种方法!将范围内r的
替换为范围内r的
(sh.nrows)[0::
,替换为sh.nrows中r的
>>> s
'{"This is an example", "of what I what I have to deal with.  ", "Please pick up th following:", "eggs", "milk", "Thanks for picking groceries up for me"}'

>>> print s.replace(",","\n").replace("{","").replace("}","").replace('"',"")
This is an example
 of what I what I have to deal with.
 Please pick up th following:
 eggs
 milk
 Thanks for picking groceries up for me

>>> open("output.csv","w").write( s.replace(",","\n").replace("{","").replace("}","").replace('"',"") )