我正在处理将文本导出为CSV类型数据的应用程序。文本被分解为难以回归的字段。我一直在尝试使用pythons CSV来恢复文本。
这是文字的一个例子:
{"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"}
这个文本读取此输出的最佳方法是:
This is an example of what I have to deal with. Please pick up the following: eggs milk Thanks for picking up the groceries 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_behavior返回的实际单元格值如下:
['{"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运行以清理它并将其打印到文本文件中。我现在正试图使(项目)看起来正常。
答案 0 :(得分:1)
import csv
with open('test') as f:
for row in csv.reader(f):
for item in row:
item=item.strip('{} "')
print(item)
strip method会从字符串item
的左端或右端删除指定的字符。
答案 1 :(得分:1)
请解释一下你必须要做的事情。
x = {"This is an example", ......., "Thanks for picking groceries up for me"}
看起来像设置。然后你传递[x]
作为csv.reader的第一个arg !!这不起作用:
[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
>>>
你说“将文本导出为CSV类型数据的应用程序” - “导出”是什么意思?如果它意味着“写入文件”,请(如果您不能按照遍布网络的示例)给我们转储文件以供查看。如果它意味着“方法/函数返回一个python对象”,请执行print(repr(python_object))
并使用打印输出的复制/粘贴更新您的问题。
您有关于应用程序输出的文档吗?
评论和问题编辑后更新:
你说单元格值“返回”是:
['{“花生先生花了3.2个小时与'bojangles}战斗',''','”垃圾箱被清理,消毒并更换“','”食物得到了补充 - 用最好的食物“”, '',''技术员 - 让约翰逊执行所有任务“}']
这看起来就像你通过CSV mangle传递ACTUAL数据后打印的内容,而不是xlrd提取的原始值,这当然不是列表;它将是一个单一的unicode对象。
如果您之前没有阅读过:请解释一下开始的内容。
你认为可以做到这些:
(1)请执行print(repr(cat_behavior))
并使用打印输出的复制/粘贴更新您的问题。
(2)说明有关创建Excel文件的应用程序的文档。
答案 2 :(得分:0)
您需要调查csv.writer
将数据导出到csv,而不是csv.reader
。
编辑:问题冲突的正文和标题。您使用csv.reader
是正确的。您可以在for循环中使用print
来获得您所追求的结果。
答案 3 :(得分:0)
>>> 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('"',"") )