如何在 Python 中 .write() 两个项目,一个零和一个迭代器?

Posted

技术标签:

【中文标题】如何在 Python 中 .write() 两个项目,一个零和一个迭代器?【英文标题】:How to .write() two items, a zero and an iterator in Python? 【发布时间】:2015-09-04 19:35:06 【问题描述】:

我在这里可能有一个简单的格式问题 - 我想做一些类似 hrOut.write('0',i) 的事情,以便在 'i' 中添加/前缀一个零,这是一个时间戳,但我没有'不知道正确的语法。我的代码如下。谢谢大家。

hrIn = open('HrsInput.csv')
hrOut = open('HrsOutput.csv', 'wt')

for i in hrIn:
    if len(i) < 5:    
        hrOut.write('0', i)
    else:
        hrOut.write(i)

hrIn.close()
hrOut.close()

** 我最终发现填充技术有效。我可能被 excel 欺骗了,因为在记事本中出现了填充。

hrIn = open('HrsInput.csv')
hrOut = open('HrsOutput.csv', 'wt')

for i in hrIn:   
    hrOut.write("\n".format(i.rstrip().zfill(5)))

hrIn.close()
hrOut.close()

【问题讨论】:

【参考方案1】:

使用str.format:

hrOut.write('0'.format(i))

或者去掉 if/else 和 pad:

for i in hrIn:   
    hrOut.write("\n".format(i.rstrip().zfill(5)))

zfill 只会为您的时间添加一个零,包含四个字符:

In [21]: "12:33".zfill(5)
Out[21]: '12:33'

In [22]: "2:33".zfill(5)
Out[22]: '02:33'

【讨论】:

谢谢,这消除了我的语法错误,但我可能还有另一个问题。我没有看到添加的零。我应该再解释一下——我的每小时时间戳有 X:XX 或 XX:XX。所以,XX:XX 已经是正确的,但我试图在 X:XX 前面添加一个零,使其成为 XX:XX。您的建议 sn-p 是这样做还是我没有正确处理? 我不太确定输入是否为字符串形式。我正在查看 excel 中的输入列,它似乎没有定义格式。如果我定义为文本,我会丢失 X:XX 或 XX:XX 格式。如果我只是 .write(i) 我在输出文件中得到与输入文件相同的格式。 @AF2k15,如果字符串长度为四个字符,zfill 将添加前导零,您计算换行符吗? 我用两种不同的代码编辑器尝试了这两种技术,并且每次都从我之前的尝试中删除了输出文件,以确保它不是覆盖问题。我不得不假设我的输入文件而不是代码有问题,所以我很感激你的信息。谢谢。 @AF2k15,不用担心,我添加了几个例子来证明它确实有效!【参考方案2】:

只是一个建议。如何做如下的事情。

(1) 在 ':' 上拆分时间戳。例如:

"1:20".split(':')[:1]

这将返回 1

(2) 然后在 python 中使用 zfill 或 sprintf 等效项。类似的东西:

"%02d" % (1,)

or use zfill on the split string (1) like : 

"1".zfill(3)

【讨论】:

以上是关于如何在 Python 中 .write() 两个项目,一个零和一个迭代器?的主要内容,如果未能解决你的问题,请参考以下文章

如何比较python中的两个列表并返回匹配项

python中的两个二维数组,如何让这两个二维数组在不使用循环的情况下对应项进行加减乘除运算呢?

window.document.write 的 jQuery 等效项

python中如何把相邻的字符交换位置

Python InfluxDB2 - write_api.write(...) 如何检查是不是成功?

如何在 python-tesseract 中设置 tessedit_write_images?