2 回答

TA貢獻(xiàn)1909條經(jīng)驗 獲得超7個贊
您使用非常非常奇怪的方法來創(chuàng)建字符串。
您不需要將print()其作為字符串保存在變量中 - 所以您不需要io.String()
更流行的是將所有字符串保留在列表中,然后使用"\n"
all_rows = []
for row in query_job:
all_rows.append( "col1={}, col2={}, col3={}".format(row[0], row[1], row[2]) )
out1 = '\n'.join(all_rows)
哪個可以寫成列表理解
all_rows = [ "col1={}, col2={}, col3={}".format(row[0], row[1], row[2]) for row in query_job ]
out1 = '\n'.join(all_rows)
不太流行的是直接使用 string with +=and\n
out1 = ""
for row in query_job:
out1 += "col1={}, col2={}, col3={}".format(row[0], row[1], row[2])
out1 += "\n"
你甚至可以"\n"直接輸入"col1={}, col2={}, col3={}\n"
out1 = ""
for row in query_job:
out1 += "col1={}, col2={}, col3={}\n".format(row[0], row[1], row[2])
順便說一句:如果你只有 3 個元素,row那么你可以使用*in.format(*row)
out1 = ""
for row in query_job:
out1 += "col1={}, col2={}, col3={}\n".format(*row)
或列表理解
all_rows = [ "col1={}, col2={}, col3={}".format(*row) for row in query_job ]
out1 = '\n'.join(all_rows)
甚至一行
out1 = '\n'.join([ "col1={}, col2={}, col3={}".format(*row) for row in query_job ])
順便提一句:
如果您必須使用print()緩沖區(qū)(或文件處理程序),那么您不必更換,sys.stdout但您可以使用print(..., file=buffer)
buffer = io.StringIO()
for row in query_job:
print("col1={}, col2={}, col3={}".format(row[0], row[1], row[2]), file=buffer)
out1 = buffer.getvalue() #
但我不知道它是否適用于Transcrypt(and Wrangler),因為Transcrypt可能只有標(biāo)準(zhǔn)模塊的一部分——只有可以轉(zhuǎn)換為 JavaScript 的模塊。某些函數(shù)可能無法轉(zhuǎn)換,因為 JavaScript 無法訪問您的磁盤(出于安全原因)并且它無法使用您的文件。

TA貢獻(xiàn)1829條經(jīng)驗 獲得超6個贊
能夠修改以前使用 pandas 收集輸出的(非常低效的)方法:
df = pd.read_gbq(sql, project_id=project_id)
我以前不知道的更快更簡單的解決方案。目前仍然與 Transcrypt 不兼容,但至少這部分已解決。
添加回答
舉報