【问题标题】:Python CSV Writer Appending ".0" to all integers [duplicate]Python CSV Writer将“.0”附加到所有整数[重复]
【发布时间】:2018-03-05 14:26:22
【问题描述】:

我编写了一些代码并尝试对其进行重构以减少几个步骤,但我似乎无法找到答案。我正在读取一个 excel 文件并进行一堆列重命名和删除我不需要的列。我的最终目标是将 Excel 文件编写为文本制表符分隔的文件,并以一种非常笨拙的方式完成所有这些工作。我有一个函数 convertToText() 可以读取 excel 文件并将其转换为 txt 文件。但是,文件中的每个整数都会在末尾附加一个 .0。

例如

Excel value 1234321

Txt File = 1234321.0

我只是使用 pandas、openpyxl 和 xlrd 进行简单的读写。

def convertToText():
        with open(os.path.join(outFile, 'target2.txt'), 'wb') as myTxtfile:
            wr = csv.writer(myTxtfile, delimiter="\t") 
            myfile = xlrd.open_workbook(outFile + fileName)
            mysheet = myfile.sheet_by_index(0)
            for rownum in xrange(mysheet.nrows):
               wr.writerow(mysheet.row_values(rownum))

我不得不编写第二个函数,只是为了在 .0 上进行查找和替换,并试图将这一步从流程中删除。如果有人对如何在上述函数中执行此操作有任何想法,将不胜感激!

【问题讨论】:

  • 你能打印mysheet.row_values(rownum)给我们看吗?
  • 您确定在 Excel 中查看文件时,它没有隐藏原始小数位吗?
  • 您只需要确保数字是整数:在 Excel 中它们都是浮点数。
  • @Jean-FrançoisFabre,这不是您标记的那个的副本。另一个问题是关于简单地将数字读取为整数,而这个问题不仅是关于读取,而且是关于保存在 CSV 文件中。与其他问题给出的答案相比,可能会有不同的答案执行任务。所以我建议这个问题被恢复并重新打开。
  • 好的,但是如果您将读取为整数,那么写入不再是问题。该链接解释了如何在阅读时转换为整数。我正在等到 OP 编辑​​他的帖子以解释为什么它不是重复的。我不会在没有更多参数的情况下重新打开(或者我将无法再次关闭)。其他一些蟒蛇黄金可以做到这一点。

标签: python csv writer


【解决方案1】:

this 和你的意思一样吗?

所以我认为你的代码应该变成,虽然我没有测试数据所以我无法尝试:

def convertToText():
    with open(os.path.join(outFile, 'target2.txt'), 'wb') as myTxtfile:
        wr = csv.writer(myTxtfile, delimiter="\t") 
        myfile = xlrd.open_workbook(outFile + fileName)
        mysheet = myfile.sheet_by_index(0)
        for rownum in xrange(mysheet.nrows):
           wr.writerow([int(i) for i in mysheet.row_values(rownum)])

【讨论】:

  • @AmJac 我刚刚尝试了上面的代码,但它出错了。 wr.writerow([int(i) for i in mysheet.row_values(rownum)]) ValueError: invalid literal for int() with base 10: 'zip' 有什么想法吗?
  • 听起来文件中不仅有数值,对吗?
猜你喜欢
  • 2021-05-10
  • 2019-03-01
  • 2014-10-02
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 2018-03-15
相关资源
最近更新 更多