【问题标题】:How do I get the length of the first line in a multi line string?如何获取多行字符串中第一行的长度?
【发布时间】:2015-08-06 08:14:00
【问题描述】:

我有一个由从图像创建 ASCII 艺术的脚本生成的多行字符串。它创建一条线,然后添加\r 并继续前进。如何在不使用正则表达式的情况下获得第一行的长度,或者在它说 \r 之前?最好是代码可读性强。

【问题讨论】:

  • 正则表达式有什么问题?我认为它们将是一个合适的解决方案。
  • 还有其他解决方案吗?我宁愿不使用正则表达式,因为我还没有学会它,我宁愿我的程序只包含我理解的东西。

标签: python python-2.7 multilinestring


【解决方案1】:

试试:

first, _, _ = s.partition('\r')
k = len(first)

如果你不需要字符串,你可以使用index:

k = s.index('\r')

这是有效的,因为s.index('\r') 包含最低索引k,其中s[k] == '\r' - 这意味着在回车之前的第一行正好有k 字符(s[0]s[k-1])字符。

【讨论】:

  • 我接受了这一点,因为之前有整个字符串很有用。我正在使用 PIL 来查找字符串的大小(以像素为单位)。我使用的是等宽字体,所以无论我找到整个字符串的大小还是一个字符的大小乘以行的长度都无关紧要,但我觉得找到整行的长度更安全。跨度>
【解决方案2】:

使用findindex

>>> 'abcfoo\rhahahahaha'.find('\r')
6
>>> 'abcfoo\rhahahahaha'.index('\r')
6

【讨论】:

    【解决方案3】:
    import string
    string.split(yourString, '\r')
    length = len(string[0])
    

    所以我们这里的内容是直截了当的。我们获取您的字符串,并在获得 /r 标记后立即将其拆分。然后,由于所有以 /r 结尾的字符串都在一个数组中,我们只需计算数组中第一个捕获的字符串并将其分配给 var 长度。

    【讨论】:

    • 你为什么不编辑这个,添加一行length = len(string[0])?这将是一个有效的回应并且运作良好。
    • 嗯,你已经得到了很多很棒的答案,以至于当我来编辑它时,它已经得到了回答,哈哈
    • @ScottJohnson 您应该编辑您的答案并添加一些描述。通过描述,您的答案将在这里为后代和未来的用户提供与 OP 相同的问题可能会发现您的答案有用并支持它。
    【解决方案4】:

    以防万一您需要另一种解决方案..:

    with open('test.txt','r') as f:
        t = f.read()
        l = t.splitlines()
        print(len(l[0]))
    

    【讨论】:

    • 这也很好,我喜欢这个解决方案。赞成,但未接受。
    猜你喜欢
    • 2021-06-01
    • 2022-11-21
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 2011-05-13
    相关资源
    最近更新 更多