excel 使python csvwriter输出=”< string>“

wpx232ag  于 2023-02-05  发布在  Python
关注(0)|答案(2)|浏览(106)

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

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

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

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

如果我将csv编写器的引用级别设置为QUOTE_NONE,则会收到“Error:需要转义,但没有转义字符集””。显式设置转义字符会导致输入的所有引号都被转义。尝试仅向数据添加等号会导致excel显示

=<string_that_looks_like_a_date>

就这样-我尝试过的每一种引用和格式化数据的组合都无法输出所需的格式。
有没有什么方法可以让python csvwriter模块输出一些内容,excel会将其解释为纯文本,而不会在excel中显示任何额外的字符?

jhiyze9q

jhiyze9q1#

您只需要在数据前面添加="并追加"即可。

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 (old way)
    w.writerow(['="{0}"'.format(data)])  # Or this, same thing
    w.writerow([f'="{data}"'])  # Or this, also same thing

注意,使用.format()方法的字符串插值在Python 2.6和更高版本中是可用的,在Python 2.7中,你可以省略0,f字符串插值是在Python 3.6中引入的。

gmol1639

gmol16392#

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

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

value,="date",="time"

相关问题