我必须编写一个应用程序,在文件/数据库中搜索一些常量字符串(他们还没有告诉我它现在是什么,这个帖子真的没关系。)
无论如何,这些字符串往往很长(有时超过200个字符),即使使用相当大的显示器,这也会开始滚动屏幕(好吧,我也有多个窗口一次打开)。无论如何,出于可读性的原因,我想分解字符串,所以我考虑用一堆新行来对引用者进行三重引用,但三重引用保留了换行符。
我想我能做到
myStr = """some
long
string""".replace('\n', '')
但后来我担心他们有一天可能要求我在myStr
中有新行,所以这是一个半身像。即使不这样,每次程序运行时都必须完成.replace(...)
,这样效率不高。出于同样的原因,以下内容也不起作用:
myStr = "some" + \
"long" + \
"string"
所以我想知道可能有哪些替代方法,打破一个非常长的字符串,保持可读性和代码效率
Python 2.7和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