【问题标题】:Proper way to break up large strings [duplicate]分解大字符串的正确方法[重复]
【发布时间】:2013-12-10 10:27:31
【问题描述】:

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

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

但是我担心有一天他们可能会要求我在myStr 中添加换行符,所以这是一个失败。即便如此,每次程序运行时都必须执行.replace(...),这只是效率不高。出于同样的原因,以下内容也不起作用:

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

所以我想知道有什么替代方法可以分解一个很长的字符串,同时考虑到可读性和代码效率

Python 2.7 和 3.3 的兼容性是一个优势

【问题讨论】:

  • 在您的编辑中启用换行? :p

标签: python string readability


【解决方案1】:

我经常在我的代码中这样做(符合 PEP8):

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

print(my_long_string)

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

【讨论】:

  • 实际上只是将两个字符串文字彼此连接在一起,括号允许将它们放在多行上。但这是解决方案,如果将字符串作为文字放入 Python 文件是最好的。
  • 正确 :) 它一次性解决了串联、分组和 PEP8 问题 :)
【解决方案2】:

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

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

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

resources.py

longString1 = "......."

longString2 = "......."

#...

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

【讨论】:

  • 我很难准确地想象你的意思。可以发个例子吗?
  • +1,混合代码和数据并不是一个好主意。
  • @inspectorG4dget 我已经添加了更多解释。
  • 哦,这 / 是一个好主意(完全不是我从第一次阅读中得到的)。 +1
【解决方案3】:

如果您正在寻找替代方法,请尝试以下方法:

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

【讨论】:

  • 问题是我不能把"some long string"放在一行
  • 你要求替代方法,我给了你一个。阅读 cmets,您可以使用这些方法将字符串按您想要的任何一段字符串拆分,然后将其与您想要的任何内容放在分开的字符串之间。如果你愿意的话,你可以用“long”这个词来分割字符串(这将返回 [some , string]
  • 问题在于,将"some long string" 放在一行中会影响我的阅读能力。我在帖子中提到了这一点,并要求建议的替代方法应该提高效率和可读性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 2015-07-14
  • 1970-01-01
相关资源
最近更新 更多