2017-01-19 13 views
1

У меня есть очень простая проблема, с которой я не смог найти решение, поэтому я решил попробовать свою «удачу» здесь.Как форматировать длинную строку при следующих правилах pylint?

У меня есть строка, которая создается с использованием переменных и статического текста в целом. Она заключается в следующем:

filename_gps = 'id' + str(trip_id) + '_gps_did' + did + '_start' + str(trip_start) + '_end' + str(trip_end) + '.json' 

Однако моя проблема заключается в том, что pylint жалуется этой строки reprensentation как это слишком долго. И вот проблема. Как бы я отформатировал это строковое представление по нескольким строкам, не выглядя странным и все еще оставаясь в «правилах» pylint?

В один момент я закончил тем, что это выглядит как это, однако, что это невероятно «некрасиво», чтобы посмотреть на:

filename_gps = 'id' + str(
    trip_id) + '_gps_did' + did + '_start' + str(
       trip_start) + '_end' + str(
       trip_end) + '.json' 

я обнаружил, что он будет следовать «правил» pylint если я форматировал его как это:

filename_gps = 'id' + str(
    trip_id) + '_gps_did' + did + '_start' + str(
    trip_start) + '_end' + str(
    trip_end) + '.json' 

что гораздо «красивее», чтобы смотреть, но в случае, если я не имел «ул()» слепки, как бы я идти о создании такой строки?

Сомневаюсь, что существует разница между pylint для Python 2.x и 3.x, но если есть я использую Python 3.x.

ответ

3

Не используйте так много звонков str(). Используйте string formatting:

filename_gps = 'id{}_gps_did{}_start{}_end{}.json'.format(
    trip_id, did, trip_start, trip_end) 

Если у вас есть длинное выражение с большим количеством деталей, вы можете создать более логическую линию, используя (...) круглые скобки:

filename_gps = (
    'id' + str(trip_id) + '_gps_did' + did + '_start' + 
    str(trip_start) + '_end' + str(trip_end) + '.json') 

Это будет работать для разбивая строку вы также используете в качестве шаблона в операции форматирования:

foo_bar = (
    'This is a very long string with some {} formatting placeholders ' 
    'that is broken across multiple logical lines. Note that there are ' 
    'no "+" operators used, because Python auto-joins consecutive string ' 
    'literals.'.format(spam)) 
+0

Благодарим вас за разъяснения! Я не знал, что вы можете использовать скобки для строковых представлений. Я уже знал о форматировании строк. Я использую его несколько раз в моем коде. Кроме того, я не знал, что вы можете пропустить числа в строковом формате, например. 'Формат "some_string {0}". (Передача)'. Я думаю, что вышеупомянутый общий код был всего лишь остатком до того, как я его узнал, и по какой-то причине я не думал о том, если. Лол. – Zeliax