2013-12-10 1 views
0

Мне нужно написать приложение, которое ищет некоторые константные строки в файле/базе данных (они не сказали мне, что это еще, и это действительно не имеет значения для этого сообщения) ,
В любом случае, эти строки имеют тенденцию быть длинными (более 200 символов в разы) и даже с довольно большим монитором, это начинает прокручивать экран (ну, я также открываю сразу несколько окон). Во всяком случае, я хотел бы разбить строку по соображениям удобочитаемости, поэтому я подумал о тройном цитировании присоски с кучей новых строк, но тройное цитирование сохраняет новые строки.
Я полагаю, что я мог сделатьПравильный способ разбить большие строки

myStr = """some 
      long 
      string""".replace('\n', '') 

Но я боюсь, что они могли бы один день требуют, чтобы у меня в новых строках myStr, так что это перебор. Даже в противном случае .replace(...) нужно будет делать каждый раз, когда программа запускается, что просто неэффективно. По той же причине, следующий будет также не работает:

myStr = "some" + \ 
     "long" + \ 
     "string" 

Так интересно, какие альтернативные пути там может быть, чтобы разбить действительно длинную строку, сохраняя читаемость и код-эффективность в виду

Python Совместимость 2.7 и 3.3 - это плюс

+1

Включить перенос строк в вашем редактирования? : p –

ответ

4

я часто делаю это в моем коде (который соответствует PEP8):

my_long_string = (
    "foo" 
    "bar" 
    "baz" 
) 

print(my_long_string) 

Скобки просто вычисляет выражение (ы) в одну строку.

+0

На самом деле, просто поместив два строковых литерала друг на друга, они объединяют их вместе, скобки позволяют помещать их в несколько строк. Но это решение, если помещать строки в файлы Python, поскольку литералы лучше всего. – RemcoGerlich

+0

Правильно :) Он решает конкатенацию, группировку и PEP8 все в aonce :) –

4

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

Here вы можете найти пример решения.

Другой упрощенная возможность состоит в том, чтобы просто создать модуль Python с этими строками ресурсов:

resources.py

longString1 = "......." 

longString2 = "......." 

#... 

И затем использовать их в коде, как resources.longString1. Когда они разделяются в отдельном файле, содержащем только ресурсы, не будет проблемы с удобочитаемостью независимо от того, какое форматирование вы выберете.

+0

Мне сложно понять, что вы имеете в виду. Не могли бы вы разместить пример, пожалуйста? – inspectorG4dget

+0

+1, код смешивания и данные редко являются хорошей идеей. – georg

+0

@ inspectorG4dget Я добавил больше объяснений. – BartoszKP

0

Если вы ищете альтернативные методы попробовать это один:

string = "some long string" 
string_list = string.split(' ') #The space here can be replaced with whatever you 
           #would like to split your string by may it be /n 
           #or whatever else. This method returns a list of 
           #strings. 
'/n'.join(string_list) #This will rejoin your string back together with newlines 
         #where the spaces used to be. Again /n can be replaced 
+0

Проблема в том, что я не могу положить '' некоторую длинную строку "' на одну строку – inspectorG4dget

+0

Вы попросили альтернативные методы, и я дал вам один.Прочитайте комментарии, вы можете использовать эти методы, чтобы разделить строку на любую часть нужной строки и поместить ее вместе с тем, что вы хотите, между вашими разделенными строками. Черт, вы могли бы разделить строку словом «long», если бы вы хотели (что бы вернуть [some, string] – asdf

+0

. Проблема в том, что наличие '' некоторой длинной строки "' на одной строке бесполезно с моей способностью ее читать . Я упомянул об этом в своем посте, а также просил, чтобы предлагаемые альтернативные методы должны поддаваться повышению эффективности и удобочитаемости – inspectorG4dget