gpt4 book ai didi

python - time.strptime() - 参数 0 必须是 str,而不是字节

转载 作者:行者123 更新时间:2023-12-03 18:38:42 25 4
gpt4 key购买 nike

显然我已经知道 strftimestrptime不喜欢字节字符串作为参数,但是我在这里处于困境,因为我有点需要读取其中保存有不同字符编码的文件内容,我需要处理它们,并发送每个的时间部分此文本文件中的行到 strptime() .

一个快速的解决方法是拆分字符串,确保时间只包含数字和破折号,但是否有可能以某种方式传递字节对象,而无需试图找出对 strptime() 的编码。 ?

with open('file.txt', 'rb') as fh:
for line in fh:
time.strptime(line, '%Y-%m-%d ...')

这显然会失败。我想做 repr(line)但这会导致字符串看起来像 b'2014-01-07 ...' ,我可以剥离..

最佳答案

line是一个字节串,因为您以二进制模式打开文件。您需要对字符串进行解码;如果它是匹配模式的日期字符串,则可以简单地使用 ASCII:

 time.strptime(line.decode('ascii'), '%Y-%m-%d ...')

您可以添加 'ignore'忽略任何非 ASCII 的参数,但无论如何,该行可能不适合您的日期格式。

请注意,您不能传递包含超过解析格式的值; strptime() 未明确涵盖的带有其他文本的行无论您使用什么编解码器,模式都不起作用。

如果您的输入在编解码器中真的变化很大,那么无论如何您都需要以一种或另一种方式捕获异常。

除了 UTF-16 或 UTF-32,我不希望您遇到任何对阿拉伯数字使用不同字节的编解码器。如果您的输入真的在一个文件中混合了多字节和单字节编解码器,那么您手头上的问题就更大了,至少因为换行处理会严重困惑。

关于python - time.strptime() - 参数 0 必须是 str,而不是字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com