Python CSV从元素中提取时间值

Python CSV从元素中提取时间值,python,postgresql,csv,Python,Postgresql,Csv,我编写了一个python脚本,将pgRouting(PostgreSQL)的输出存储在CSV文件中,代码和CSV文件的一部分如下所示 import sys, os os.chdir('C:\Users\Heinz\Desktop') print os.getcwd() #set up psycopg2 environment import psycopg2 #driving_distance module query = """ select * from shortest_

我编写了一个python脚本,将pgRouting(PostgreSQL)的输出存储在CSV文件中,代码和CSV文件的一部分如下所示

import sys, os
os.chdir('C:\Users\Heinz\Desktop')
print os.getcwd()

#set up psycopg2 environment
import psycopg2

#driving_distance module
query = """
    select *
    from shortest_path ($$
        select
            gid as id,
            source::int4 as source,
            target::int4 as target,
            pi::double precision as cost,
            pi_rcost::double precision as reverse_cost
        from network
        $$, %s, %s, %s, %s
    )
"""

#make connection between python and postgresql
conn = psycopg2.connect("dbname = 'TC_area' user = 'postgres' host = 'localhost' password = 'xxxx'")
cur = conn.cursor()

#count rows in the table
cur.execute("select count(*) from network")
result = cur.fetchone()
k = result[0] + 1                #number of points = number of segments + 1

#run loops
#import csv module
import csv
import tempfile
import shutil
rs = []
i = 1
l = 1
filename = 'test.csv'
with open(filename, 'wb') as f:
    while i <= k:
        while l <= k:
            cur.execute(query, (i, l, False, True))
            rs.append(cur.fetchall())
            element = list(rs)
            writer = csv.writer(f, delimiter = ',')
            writer.writerow(element)
            rs = []
            l = l + 1
        l = 1
        i = i + 1

conn.close()
这是输出的一部分


本质上,您所需要知道的就是如何将列表中的所有元素组合在一起。这可以使用如下方法完成:

reduce(lambda x,y: x * y, a_list)
现在,查看您的代码,csv中的每个条目都由以下语句生成:

element = list(rs)
例如,
元素
可以有:

[(1, -1, 0.0), (1, 1, 0.844), (2, -1, 0)]
您需要将每个内部元组的第三个数相乘。因此,动态创建一个列表,提取每个子元组的第三个元素

[a[-1] for a in element]
现在将其插入前面的
reduce()

product = reduce(lambda x,y: x * y, [a[-1] for a in element])
这将为上述示例打印
0.0
。现在您已经有了产品,可以将其用作输出CSV,以及您希望如何在输出CSV中打印它


希望有帮助。

谢谢,但是如何创建一个列表来存储每个子元组的第三个元素呢?@heinz
[a[-1]表示in元素]
正在这样做。它使用列表理解
a[1]
指的是每个子元组的最后一个元素,在这种情况下你是对的,我将编辑我的帖子,指出我在一开始就忽略的问题,谢谢你的回复。
product = reduce(lambda x,y: x * y, [a[-1] for a in element])