【问题标题】:How to extract values from tuple in Python?如何从 Python 中的元组中提取值?
【发布时间】:2016-02-12 20:32:11
【问题描述】:

您好,我有以下内容;

A =
((248500353L,
  11,
  '4',
  '248741302',
  633,
  7321L,
  7321L,
  'EAD4083003',
  0,
  datetime.datetime(2011, 4, 19, 23, 0, 42),
  datetime.datetime(2011, 4, 19, 23, 1, 39)),)

我想提取逗号之间的所有值并保留日期格式。我正在做的事情如下:

An =  re.findall(r'\d+', str(A))

返回 A 中存在的所有整数,但这样我就丢失了有关日期格式的信息。有什么建议吗?

【问题讨论】:

  • 我想第一个问题是你最初是从哪里得到格式的,你能有更有用的东西吗?
  • 我不明白你的问题。我想提取逗号之间的所有值,保留最后两个条目的日期格式。
  • 我的问题是你为什么要解析它?你似乎有一些Python对象的字符串形式——它是从哪里来的?你能拿到实物吗?或者安排一个更容易解析的格式?这个任务的目的是什么?另外,请注意您的标题毫无意义。
  • 这看起来像一个单元素元组,其中包含一个完全可用的数据元组。你知道如何索引或解包元组吗?
  • 您的源数据文本(或包含文本的文件)是这种格式吗?

标签: python regex datetime


【解决方案1】:

如前所述,A 已经是 Python 元组,无需先将其转换为字符串并尝试使用正则表达式进行解析。

如果你试图将这些数据写入CSV文件,可以直接将元组写入如下:

import datetime 
import csv

A = ((248500353L,
    11,
    '4',
    '248741302',
    633,
    7321L,
    7321L,
    'EAD4083003',
    0,
    datetime.datetime(2011, 4, 19, 23, 0, 42),
    datetime.datetime(2011, 4, 19, 23, 1, 39)),)

with open('output.csv', 'wb') as f_output:  
    csv_output = csv.writer(f_output)
    csv_output.writerow(A[0])

这会给你一个输出文件,如下所示:

248500353,11,4,248741302,633,7321,7321,EAD4083003,0,2011-04-19 23:00:42,2011-04-19 23:01:39

在这种情况下,无需先尝试提取所有条目。如果您需要更好地控制日期格式,则可以轻松添加。这里它使用默认转换为字符串格式。

它确实假设您希望输出所有字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2019-04-04
    • 2020-02-28
    • 1970-01-01
    相关资源
    最近更新 更多