正确的方法来打破大字符串

时间:2013-12-10 10:27:31

标签: python string readability

我必须编写一个应用程序,在文件/数据库中搜索一些常量字符串(他们还没有告诉我它现在是什么,这个帖子真的没关系。)
无论如何,这些字符串往往很长(有时超过200个字符),即使使用相当大的显示器,这也会开始滚动屏幕(好吧,我也有多个窗口一次打开)。无论如何,出于可读性的原因,我想分解字符串,所以我考虑用一堆新行来对引用者进行三重引用,但三重引用保留了换行符。
我想我能做到

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

但后来我担心他们有一天可能要求我在myStr中有新行,所以这是一个半身像。即使不这样,每次程序运行时都必须完成.replace(...),这样效率不高。出于同样的原因,以下内容也不起作用:

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

所以我想知道可能有哪些替代方法,打破一个非常长的字符串,保持可读性和代码效率

Python 2.7和3.3兼容性是一个加号

3 个答案:

答案 0 :(得分:4)

这是一个基于意见的主题,但我想提出一个不同的解决方案:使用这些字符串创建资源文件,并使用可读的密钥名称引用它们。

Here您可以找到一个示例解决方案。

另一种简单的可能性是只使用这些资源字符串创建一个Python模块:

<强> resources.py

longString1 = "......."

longString2 = "......."

#...

然后在代码resources.longString1中使用它们。当它们在仅包含资源的单独文件中分离时,无论您选择何种格式,都不会出现可读性问题。

答案 1 :(得分:4)

我经常在我的代码(符合PEP8 )中执行此操作:

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

print(my_long_string)

括号只是将表达式计算为单个字符串。

答案 2 :(得分: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