如何获取多行字符串的第一行长度?

3

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


正则表达式有什么问题吗?我认为它们可能是一个合适的解决方案。 - skrrgwasme
有其他解决方案吗?我不想使用正则表达式,因为我还没有学会它,而且我更希望我的程序只包含我理解的内容。 - Luke Taylor
4个回答

5

使用 find 还是 index

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

3

尝试:

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]),即第一行正好包含k个字符。


我接受了这个,因为拥有整个字符串之前的内容是很有用的。我正在使用PIL来查找字符串的像素大小。我正在使用等宽字体,因此无论我找到整个字符串的大小还是行长度乘以一个字符的大小,都不应该有影响,但我感觉找整行的长度更安全一些。 - Luke Taylor

1
import string
string.split(yourString, '\r')
length = len(string[0])

这里的内容很简单。我们获取你的字符串并在遇到/r标记时将其拆分。由于所有以/r结尾的字符串都在一个数组中,所以我们只需计算数组中第一个捕获的字符串,并将其赋值给变量length。

1
为什么不编辑一下,加上一行代码 length = len(string[0]) 呢?这将是一个有效的响应并且能够很好地工作。 - Luke Taylor
你已经得到了很多非常好的答案,以至于当我来编辑它时,它已经被回答了,哈哈。 - Scott Johnson
@ScottJohnson 你应该编辑你的答案并添加一些描述。有了描述,你的答案将为后人留下,并且未来遇到与OP相同问题的用户可能会发现你的答案很有用并点赞它。 - Luís Cruz

1

仅供参考,如需另一种解决方案..:

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

很好,我也喜欢这个解决方案。已点赞,但未被采纳。 - Luke Taylor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接