如何在 python 中将列中的多行从 unicode 更改为时间戳

How to change multiple rows in a column from unicode to timestamp in python

我正在为初学者学习python。我想将列值从 unicode 时间 ('1383260400000') 转换为时间戳 (1970-01-01 00:00:01enter code here)。我已阅读并尝试了以下内容,但它给了我一个错误。

ti=datetime.datetime.utcfromtimestamp(int(arr[1]).strftime('%Y-%m-%d %H:%M:%S');

它说语法无效。我阅读并尝试了一些其他的东西,但我做不到。有什么建议吗?

还有一个,在同一个文件中,我有一些空单元格,我想用 0 替换,我也试过了,但它给了我无效的语法:

smsin=arr[3]; if arr[3]='' : smsin='0'; 请帮忙。非常感谢。

您似乎忘记了 (arr[1]) 之后的右括号。

import datetime

arr = ['23423423', '1163838603', '1263838603', '1463838603']
ti = datetime.datetime.utcfromtimestamp(int(arr[1])).strftime('%Y-%m-%d %H:%M:%S')

print(ti)
# => 2006-11-18 08:30:03

要用列表中的“0”替换空字符串,您可以这样做:

arr = ['123', '456', '', '789', '']
arr = [x if x else '0' for x in arr]

print(arr)
# => ['123', '456', '0', '789', '0']

请注意,后者只能正常工作,因为空字符串 '' 是唯一具有 truth valueFalse 的字符串。如果您在 arr 中有其他数据类型(例如 00L0.0()[]、...)并且仅想要替换你必须做的空字符串:

arr = [x if x != '' else '0' for x in arr]

更有效的方法是就地修改 arr 而不是重新创建整个列表。

for index, item in enumerate(arr):
    if item = '':
        arr[index] = '0'

但如果这不是问题(例如,您的列表不是太大),我更喜欢前一种(更具可读性)的方式。

此外,您不需要将 ; 放在代码行的末尾,因为 Python 不需要它们来终止语句。如果您希望将多个语句放在同一行但您的代码中不是这种情况,它们可用于分隔语句。