У меня есть многострочная строка, сгенерированная скриптом, который создает искусство ASCII из изображения. Он создает линию, затем добавляет \r
и продолжает двигаться. Как получить длину первой строки или до того, как она произнесет \r
без использования регулярного выражения? Предпочтительно код является достаточно читаемым.Как получить длину первой строки в многострочной строке?
ответ
Try:
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]
) в первой строке, перед символом возврата каретки.
О, мне это нравится, upvoted! –
Я принял это, потому что все целые строки полезны. Я использую PIL, чтобы найти размер в пикселях строки. Я использую моноширинный шрифт, поэтому не имеет значения, нахожу ли я размер всей строки или размер одного символа по длине строки, но я чувствую себя более уверенным в поиске длины всей строки. –
С find
или index
?
>>> 'abcfoo\rhahahahaha'.find('\r')
6
>>> 'abcfoo\rhahahahaha'.index('\r')
6
import string
string.split(yourString, '\r')
length = len(string[0])
Итак, что мы имеем здесь прямо вперед. Мы берем вашу строку, и мы ее разделяем, как только получаем тег/r. Затем, поскольку все строки, заключенные с/r, находятся в массиве, мы просто подсчитываем первую захваченную строку в массиве и присваиваем ей длину var.
Все в порядке :) спасибо в любом случае –
Почему бы вам не изменить это, добавьте строку, которая говорит 'length = len (string [0])'? Это будет правильным ответом и будет хорошо работать. –
Ну, у вас так много замечательных ответов, что к тому времени, когда я пришел, чтобы отредактировать это, мне уже ответили lol –
Только в случае, если вам нужно еще одно решение ..:
with open('test.txt','r') as f:
t = f.read()
l = t.splitlines()
print(len(l[0]))
Это тоже хорошо, мне нравится это решение. Приостановлено, но не принято. –
Что случилось с регулярным выражением? Я думаю, что они будут подходящим решением. – skrrgwasme
Есть ли другое решение? Я бы предпочел не использовать регулярное выражение только потому, что еще не узнал его, и я предпочел бы, чтобы моя программа содержала только то, что я понимаю. –