Заменить одинарные кавычки из списка в Python - PullRequest
0 голосов
/ 27 июня 2018

Я запрашиваю bigquery, чтобы получить его схему, которая возвращает приведенный ниже список

['word STRING', 'word_count INTEGER', 'corpus STRING', 'corpus_date INTEGER']

Из этого списка вывода я пытаюсь заменить одиночную кавычку пустой и INTEGER на BIGINT, используя приведенный ниже код.

# Output from the query    
result = ['word STRING', 'word_count INTEGER', 'corpus STRING', 'corpus_date INTEGER']
result_new = [string.replace("INTEGER", "BIGINT").replace("'", "") for string in result]
result_new = 'create table {} {} stored as orc;'.format(table_id, result_new)
print(result_new) 

Возвращаемый результат:

create table shakespeare ['word STRING', 'word_count BIGINT', 'corpus STRING', 'corpus_date BIGINT'] stored as orc;

где мой желаемый результат:

create table Shakespeare (word STRING, word_count BIGINT, corpus STRING, corpus_date BIGINT) stored as orc;

Поскольку я полностью новичок в Python, я гуглил и пробовал много вещей, но заменял INTEGER на BIGINT, но не работал для замены других вещей.

Есть ли какой-нибудь удобный способ сделать это?

1 Ответ

0 голосов
/ 27 июня 2018

В вашем примере вы используете представление списка, которое включает квадратные скобки и кавычки, кавычки находятся не в самих строках, а в представлении списка, которые Python автоматически генерирует, когда вы включаете его в другую строку с помощью .format.

Лучше всего построить строку так, как вам нужно:

result = ['word STRING', 'word_count INTEGER', 'corpus STRING', 'corpus_date INTEGER']
# turn integer into bigint
result = [x.replace('INTEGER', 'BIGINT') for x in result]
# join the strings in a single string using comma as separator:
result_new = ', '.join(result) 
sql = 'create table {} ({}) stored as orc;'.format(table_id, result_new)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...