Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在数组中获取正确的值_Python_Arrays - Fatal编程技术网

Python 在数组中获取正确的值

Python 在数组中获取正确的值,python,arrays,Python,Arrays,我试图只保存数组列表中的DateTime和DateTimeOriginal 运行此脚本时,在打印arraylist时会得到以下输出: [(0x0132) ASCII=2010:07:13 00:00:42 @ 174, (0x9003) ASCII=2010:07:13 00:00:42 @ 530] 我试图只获得以下输出,就像我使用打印功能得到的一样: DateTime : 2010:07:13 00:00:42 DateTimeOriginal : 2010:07:13 00:00:42

我试图只保存数组列表中的DateTime和DateTimeOriginal

运行此脚本时,在打印arraylist时会得到以下输出:

[(0x0132) ASCII=2010:07:13 00:00:42 @ 174, (0x9003) ASCII=2010:07:13 00:00:42 @ 530]
我试图只获得以下输出,就像我使用打印功能得到的一样:

DateTime : 2010:07:13 00:00:42
DateTimeOriginal : 2010:07:13 00:00:42
我的代码:

import exifread

f = open('dfround2.jpg', 'rb')

time = []

tags = exifread.process_file(f)
print("Time information: \n")
for tag in tags.keys():
    if 'Image DateTime' in tag:
        print("DateTime : %s" % (tags[tag]))
        time.append(tags[tag])
    if 'EXIF DateTimeOriginal' in tag:
        print("DateTimeOriginal : %s" % (tags[tag]))
        time.append(tags[tag])

print("Tijd: \n", time)
如果以后必须使用DateTime和DateTimeOriginal,存储它们的最佳方法是什么?将它们放入变量中是否更好?我该怎么做

我想做的是:
获取图像的时间日期并将其放入时间轴中。所以我必须在以后的脚本中使用我的输出,但我不知道如何存储它。

我只大约80%确定我理解您的要求,但是

这将打印出所需的字符串:

print("DateTimeOriginal : %s" % (tags[tag]))
这将存储一些您不想要的复杂标记对象:

time.append(tags[tag])
您需要的只是打印出的相同字符串,而不是标记对象

如果您查看文档,转换类型%s将为您提供:

String使用str转换任何Python对象

因此,如果要存储与%s打印的内容相同的内容,只需调用str,方法与此相同:

time.append(str(tags[tag]))

我不确定您为什么要构建一个包含所有DateTime和DateTimeOriginal标记的字符串表示的列表,但如果这是您想要的,那就是如何做到的。

在这两种情况下,标记实例是相同的,但具有不同的属性

您可以将strtag添加到列表中,也可以在再次读取时使用strelement

例如:

from exifread import process_file

with open('dfround2.jpg', 'rb') as f:
    tags = process_file(f)
    time = tags['Image DateTime']
    orig = tags['EXIF DateTimeOriginal']
    print [str(time), str(orig)]
    # ['2014:12:05 18:12:09', '2013:07:20 15:53:30']
尝试使用.printable仅获取字符串表示形式。实际上,如果您检查Exifrad的源代码,您将看到strtag返回可打印的


arraylist是什么意思?在您的代码中,您在哪里打印输出类似于第一行的内容?此外,您只是想问,如何获得使用%s说明符打印显示的标记[tag]的相同字符串?如果是这样,正如%的文档所解释的,它只是调用str函数,所以您可以做同样的事情。@abarnert printTijd:\n,时间打印第一行。时间=[]是我的列表。通过循环,我从图像中获取元数据,但我必须将时间和日期用于其他事情。但是,我如何使用它们而不将它们放入变量或列表中呢?首先,这真的是它打印的内容吗?因为如果是这样的话,Exifrad库正在做一些非常奇怪的事情……同时,你是什么意思?我如何使用它们而不将它们放入变量或列表中?你已经在打印报表中使用了,对吗?如果你想在以后使用它们,那么显然你必须将它们存储在一个列表或其他东西中;你为什么不想?谢谢你帮我。但是当我使用时间时。appendstrtags[tag]。我仍然得到很多数据。我希望当我打印时间时,我只看到2个值:DateTime:2010:07:13 00:00:42 DateTime原件:2010:07:13 00:00:42。老兄,谢谢你!哇,非常感谢这对我很有帮助!
from exifread import process_file

with open('dfround2.jpg', 'rb') as f:
    tags = process_file(f)
    time = tags['Image DateTime']
    orig = tags['EXIF DateTimeOriginal']
    print [str(time), str(orig)]
    # ['2014:12:05 18:12:09', '2013:07:20 15:53:30']
if 'Image DateTime' in tag:
    print("DateTime : %s" % (tags[tag]))
    time.append(tags[tag].printable)
if 'EXIF DateTimeOriginal' in tag:
    print("DateTimeOriginal : %s" % (tags[tag]))
    time.append(tags[tag].printable)