在使用python写入文本文件时,我需要更新特定的列

2024-10-01 09:19:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pyhton2.7来比较数据集。我调用select语句从两个表中提取数据str(row[4])始终为空。我得在那一栏写个“T”

在我在下面代码中使用的g.write语句中,有没有一种写入str(row[4])的方法

这是我代码的一部分:

## This is used to connect to our database and run the sql statement.
def RunSQLStatement(sql):
    conn = psycopg2.connect(Connect2DB())
    cursor = conn.cursor()
    cursor.execute(sql)
    alias_data = cursor.fetchall()
    cursor.close()
    conn.close()
    return alias_data

def selectFoisp():
    with open(outTemp_file, 'w') as g:
        strGetDiffer = """SELECT c.foi_id, c.title, c.feat_type, c.feat_subtype, c.upd_type, p.foi_id, p.title
    FROM foisp c, foisp_prior p
    WHERE (c.foi_id = p.foi_id)
    AND (c.title <> p.title)"""

    extract_rows = RunSQLStatement(strGetDiffer)

    for row in extract_rows:
        g.write(str(row[0]) + ',' + str(row[1]) + ',' + str(row[2])  + ',' + str(row[3]) + ',' + str(row[4]) + ',' +  str(row[5]) + ',' + str(row[6]) + '\n')

Tags: to数据代码idsqltitledefconnect
2条回答

如果它总是空的,为什么不直接用'T'替换str(row[4])(正如迈克尔所做的)

也就是说,您应该能够直接操纵循环中的row[4]

for row in extract_rows:
    row[4] = 'T'
    g.write(str(row[0]) + ',' + str(row[1]) + ',' + str(row[2])  + ',' + str(row[3]) + ',' + str(row[4]) + ',' +  str(row[5]) + ',' + str(row[6]) + '\n')

此外,您应该考虑使用CSV模块:

import csv
writer = csv.writer(g)
for row in extract_rows:
    row[4] = 'T'
    writer.writerow(row)

这将自动将iterable排序为您指定的格式(逗号分隔,但如果您希望它与其他内容分隔,则可以更改某些参数),这样就不必进行冗长的字符串连接。那样看起来也干净多了

g.write(str(row[0]) + ',' + str(row[1]) + ',' + str(row[2])  + ',' + str(row[3]) + ', T,' +  str(row[5]) + ',' + str(row[6]) + '\n')

或使用format method

g.write("{0}, {1}, {2}, {3}, {4}, {5}, {6}\n".format(row[0], row[1], row[2], row[3], "T", row[5], row[6])

相关问题 更多 >