使python csv writer output =“<string>”</string>

时间:2014-02-11 21:55:15

标签: python excel csv

根据这个问题的答案:Stop Excel from automatically converting certain text values to dates我正在尝试使用python的csv模块创建一个CSV文件,某些字段格式为

"=""<string-that-looks-like-a-date>"

但是我无法让CSV编写器生成这样的输出。如果我使用默认的csvwriter(没有特殊参数),并预先格式化我的数据,它会尝试引用我的所有引号,并得到如下所示的输出:

"""=""""6/6"""

如果我将csv writer的引用级别设置为QUOTE_NONE,那么我得到一个“错误:需要转义,但没有转义字符集”。显式设置转义字符会导致我放入的所有引号都被转义。尝试在我的数据中添加等号会导致excel显示

=<string_that_looks_like_a_date> 

就这样 - 我尝试的每个报价和格式化数据组合都无法输出所需的格式。

有没有办法让python csvwriter模块输出excel会解释为纯文本的内容而不会在excel中显示任何多余的字符?

2 个答案:

答案 0 :(得分:1)

您只需要预先添加="并将"附加到您的数据中。例如:

import csv

with open('test.csv', 'wb') as f:
    w = csv.writer(f)
    data = 'Feb 11'
    w.writerow([data])  # Excel will interpret this as a date
    w.writerow(['="%s"' % data])  # This is what you want
    w.writerow(['="{0}"'.format(data)])  # Or this, same thing

请注意,使用.format()方法的字符串插值在Python 2.6及更高版本中可用。在Python 2.7中,您可以省略0

答案 1 :(得分:0)

def excel_literal_print( string ): 
    print("=\"{0}\"".format(string) )

输出文件需要读取(除非excel 2007)

value,="date",="time"