我正在尝试使用变量格式化下面的字符串以提高可读性,我想将其分解,以便更容易阅读,现在它在脚本行中占用 199 个字符,我所做的每次尝试似乎都将其分解,所以打印时有很大的间隙,有人能解释一下吗?我尝试将其用 """三引号和\括起来,但在打印或记录时它仍然有空格。
copy_sql = "COPY {0} FROM 's3://{1}/{2}' CREDENTIALS 'aws_access_key_id={3};aws_secret_access_key={4}' {5}; ".format(table_name,bucket,key,aws_access_key_id,aws_secret_access_key,options)
期望的结果将是这样的影响:
copy_sql = "COPY {0} FROM 's3://{1}/{2}' \
CREDENTIALS 'aws_access_key_id={3};aws_secret_access_key={4}' {5}; \
".format(table_name,bucket,key, \
aws_access_key_id,aws_secret_access_key,options)
但是,当我打印它时,.gz 和凭据之间有很大的空格:
COPY analytics.table FROM 's3://redshift-fake/storage/2017-11-02/part-00000.gz' CREDENTIALS 'aws_access_key_id=SECRET;aws_secret_access_key=SECRET' DELIMITER '\t' dateformat 'auto' fillrecord removequotes gzip;
我认为这仍然有效,但我想清理它以提高日志记录的可读性。
最佳答案
您可以使用string literal concatenation :
Multiple adjacent string literals (delimited by whitespace), possibly using different quoting conventions, are allowed, and their meaning is the same as their concatenation. Thus,
"hello" 'world'
is equivalent to"helloworld"
.
就您而言,是这样的:
copy_sql = ("COPY {0} FROM 's3://{1}/{2}' "
"CREDENTIALS 'aws_access_key_id={3};aws_secret_access_key={4}' {5};"
).format(table_name,bucket,key,
aws_access_key_id,aws_secret_access_key,options)
注意额外的括号以使其正确解析。只要行结尾至少在一对括号内,Python 就会始终将其视为行继续,而不需要反斜杠。
关于python - 设置字符串格式以方便阅读和打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47239393/