簡體   English   中英

從字典/列表中刪除最后一個逗號

[英]remove last comma from dictionary/list

我正在嘗試使用python生成腳本,該腳本在redshift中生成卸載命令。 我不是專家Python程序員。 我需要在哪里可以生成卸載列表的所有列。 如果該列是特定名稱,則需要用一個函數替換。 我面臨的挑戰是在字典的最后一項后面加上“,”。 有什么辦法可以避免最后一個逗號? 任何幫助,將不勝感激。

import psycopg2 from psycopg2.extras 
import RealDictCursor 

try: 
    conn = psycopg2.connect("dbname='test' port='5439' user='scott' host='something.redshift.amazonaws.com' password='tiger'"); 
except: 
    print "Unable to connect to the database"

conn.cursor_factory = RealDictCursor 
cur = conn.cursor()
conn.set_isolation_level( psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT )

try: 
    cur.execute("SELECT column from pg_table_def where schema_name='myschema' and table_name ='tab1' " ); 
except: 
    print "Unable to execute select statement from the database!"

result = cur.fetchall()   
print "unload mychema.tab1 (select " 

for row in result: 
    for key,value in row.items(): 
        print "%s,"%(value)

print ") AWS Credentials here on..."

conn.close()

在每一行的值列表上使用聯接函數:

print ",".join(row.values())

簡而言之,join函數是在我們可以認為是“膠水”的字符串上調用的,並且將“件”列表作為其參數。 結果是由“膠水”“保持在一起”的一串“碎片”。 例:

>>> glue = "+"
>>> pieces = ["a", "b", "c"]
>>> glue.join(pieces) 
"a+b+c"

(由於row.values()返回一個列表,因此您實際上不需要理解,因此它比我最初寫的還要簡單)

實際上,這種方法效果更好。

columns = []
for row in result:
        if (row['column_name'] == 'mycol1') or (row['column_name'] == 'mycol2') :
           columns.append("func_sha1(" + row['column_name'] + "||" + salt +")")
        else:
           columns.append(row['column_name'])

print selstr + ",".join(columns)+" ) TO s3://"

謝謝您的幫助,喬恩

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM