С помощью какой функции можно как-то считать первую букву строки? К примеру: У нас есть переменная a, содержащая строку Евгений
.
Мне нужно, чтобы первая буква была считана какой то функцией и передана в другую переменную. Что я хочу осуществить:
c = 'Евгений'
...
if первая буква переменной a == 'c':
print("первая буква:", 'c')
Надеюсь меня поймут…
SmellyNS
7703 серебряных знака16 бронзовых знаков
1
c = 'Евгений'
a = 'Е'
if a == c[0]:
print(f"Первая буква: {c[0]}.")
ответ дан 7 мая 2020 в 16:16
ДанилкинДанилкин
5131 золотой знак4 серебряных знака11 бронзовых знаков
Вы учебник читать пробовали? А Гууглить самостоятельно?
s="Первая буква имени"
c = s[0]
print("первая буква:", c)
первая буква: П
ответ дан 7 мая 2020 в 16:10
passantpassant
11.5k2 золотых знака9 серебряных знаков16 бронзовых знаков
Для этого не нужна функция, можно взять первый символ строки с помощью обращения к индеску строки:
s = "Евгений"
print(s[0]) # вывести нулевой символ строки s
Результат:
Е
ответ дан 7 мая 2020 в 16:10
ЕвгенийЕвгений
4,4872 золотых знака8 серебряных знаков28 бронзовых знаков
I’m a python newbie but have programmed a while in other languages. I have a long string of DNA (lower case) and AA sequences (upper case). Further at the start of the file I have a protein name all in upper case. Thus my file looks like this.
PROTEINNAMEatcgatcg… JFENVKDFDFLK
I need to find the first non-uppercase letter in the string so I can then cut out the protein name. Thus, what I would want from the above is:
atcgatcg… JFENVKDFDFLK
I can do this with a loop but that seems like overkill and inefficient. Is there a simply python way to do it?
I can get all the uppercase letters using re.findall(“[A-Z]”,mystring) but then I would need to do a comparison to see where the result differs from the original string.
Thanks!
asked Apr 25, 2012 at 19:07
user1357015user1357015
11k22 gold badges65 silver badges107 bronze badges
You are almost there with your regex… but there are other methods besides findall:
http://docs.python.org/library/re.html#re.sub
>>> import re
>>> protein_regex = re.compile('^[A-Z]+')
>>> dna = 'PROTEINNAMEatcgatcg... JFENVKDFDFLK'
>>> protein_regex.sub('', dna)
'atcgatcg... JFENVKDFDFLK'
Not sure about performance, but you could also do
>>> import string
>>> dna.lstrip(string.uppercase)
'atcgatcg... JFENVKDFDFLK'
And there you have it:
python -m timeit -n 10000 -s 'import re' -s 'protein_regex = re.compile("^[A-Z]+")' -s 'dna = "PROTEINNAMEatcgatcg... JFENVKDFDFLK"' 'protein_regex.sub("", dna)'
10000 loops, best of 3: 1.36 usec per loop
python -m timeit -n 10000 -s 'import string' -s 'dna = "PROTEINNAMEatcgatcg... JFENVKDFDFLK"' 'dna.lstrip(string.uppercase)'
10000 loops, best of 3: 0.444 usec per loop
Second one looks to be ~3 times faster.
answered Apr 25, 2012 at 19:09
1
Use re.search():
import re
s1 = "ASDFASDFASDFasdfasdfasdfasdfasdf"
m = re.search("[a-z]", s1)
if m:
print "Digit found at position %d" % m.start()
else:
print "No digit in that string"
answered Apr 25, 2012 at 19:13
Nicholas DiPiazzaNicholas DiPiazza
9,91111 gold badges81 silver badges148 bronze badges
1
Try this, it’s as short as it can get:
import re
s = 'PROTEINNAMEatcgatcg... JFENVKDFDFLK'
i = re.search('[a-z]', s).start()
protein, sequences = s[:i], s[i:]
print protein
> PROTEINNAME
print sequences
> atcgatcg... JFENVKDFDFLK
answered Apr 25, 2012 at 19:23
Óscar LópezÓscar López
231k37 gold badges310 silver badges385 bronze badges
istitle can be a helpful function to find out whether the string contains an uppercase letter or not.
def check_uppercase(name) :
for i in range(0, len(name)) :
if (name[i].istitle()) :
return name[i]
return 0
name = "myCode"
value = check_uppercase(name)
if (value == 0) :
print("No uppercase letter")
else :
print(value)
#output: C
answered Sep 14, 2021 at 4:12
Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя, и в какой-то момент требуется вывести эту информацию в формате A. Ivanov. Для этого компьютеру потребуется взять первый символ из имени. В Python есть подходящая операция, которую мы изучим сегодня.
Представим, что из имени Alexander нужно вывести на экран только первую букву. Это выглядит так:
first_name = 'Alexander'
print(first_name[0]) # => A
Операция с квадратными скобками с цифрой извлекает элемент по индексу — позицией символа внутри строки. Индексы начинаются с 0 почти во всех языках программирования. Поэтому, чтобы получить первый символ, нужно указать индекс 0
. Индекс последнего элемента равен длине строки минус единица. Обращение к индексу за пределами строки приведет к ошибке:
# Длина строки 9, поэтому последний индекс — это 8
first_name = 'Alexander'
print(first_name[8]) # => r
print(first_name[9])
IndexError: string index out of range
Чтобы лучше закрепить новые знания, посмотрите на код ниже и подумайте, что он выдаст:
magic = 'nyou'
print(magic[1]) # => ?
Бывают и нестандартные ситуации. Например, нужно вывести элемент из конца, причем из выражения с большим количеством символов. В этом случае можно воспользоваться отрицательным индексом, который облегчит работу программиста.
Допустимо использовать отрицательные индексы. В этом случае идет обращение к символам, начиная с конца строки. -1
— индекс последнего символа, -2
— предпоследнего и так далее. В отличие от прямой индексации, обратный отсчет идет от -1
:
first_name = 'Alexander'
print(first_name[-1]) # => r
Индексом может быть не только конкретное число, но и значение переменной. Посмотрите на пример ниже. Здесь мы записали индекс внутри квадратных скобок не числом, а переменной. Такой код приведет к тому же результату — выводу на экран символа A:
first_name = 'Alexander'
index = 0
print(first_name[index]) # => A
Чтобы выводить из выражения лишь некоторые символы, не нужно писать большое количество строк кода — достаточно извлечь элемент с помощью индекса. Также можно пользоваться отрицательным индексом, чтобы легче выводить символы с конца выражения. Далее разберемся, как с помощью этих знаний можно извлекать подстроки из строки.
Задание
Выведите на экран последний символ строки, находящейся в переменной name
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет 🤨
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя 🤔
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно 🙄
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Определения
-
Индекс — позицией символа внутри строки.
Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Порой обучение продвигается с трудом. Сложная теория, непонятные задания… Хочется бросить. Не сдавайтесь, все сложности можно преодолеть. Рассказываем, как
Не понятна формулировка, нашли опечатку?
Выделите текст, нажмите ctrl + enter и опишите проблему, затем отправьте нам. В течение нескольких дней мы улучшим формулировку или исправим опечатку
Что-то не получается в уроке?
Загляните в раздел «Обсуждение»:
- Изучите вопросы, которые задавали по уроку другие студенты — возможно, ответ на ваш уже есть
- Если вопросы остались, задайте свой. Расскажите, что непонятно или сложно, дайте ссылку на ваше решение. Обратите внимание — команда поддержки не отвечает на вопросы по коду, но поможет разобраться с заданием или выводом тестов
- Мы отвечаем на сообщения в течение 2-3 дней. К «Обсуждениям» могут подключаться и другие студенты. Возможно, получится решить вопрос быстрее!
Подробнее о том, как задавать вопросы по уроку
Методы строк python — это одни из наиболее часто используемых методов. В данной документации по методам строк, я постарался собрать все методы, их описания, и практические примеры по их применению.
Метод capitalize() в Python, преобразует первый символ строки в заглавную букву. В случае если в строке, первый символ начинается с маленькой буквы, а где то по середине строки присутствуют заглавные буквы, то данный метод преобразует эту строку в привычный нам вариант.
Пример 1. Строка с заглавной буквы
string = "python is AWesome."
capitalized_string = string.capitalize()
print('Неизмененный вариант: ', string)
print('Измененный вариант:', capitalized_string)
#Результат
Неизмененный вариант: python is AWesome
Измененный вариант: Python is awesome
Как видите, данный метод работает достаточно просто:
- Не принимает никаких значений
- Возвращает строку с заглавной буквы (не изменяет исходную строку)
Вполне логичным выглядит вопрос, а что если строка начинается не с алфавитного символа? А давайте посмотрим.
Пример 2. Неалфавитный первый символ
string = "+ is an operator." new_string = string.capitalize() print('Неизменный вариант:', string) print('Измененный вариант:', new_string) #РезультатНеизменный вариант: + is an operator. Измененный вариант: + is an operator.
Строка в нижнем регистре Python
Метод casefold() — приведет строку в нижний регистр. Данный метод незаменим при задачах когда необходимо провести сравнение строк. Метод casefold() — удалит просто все различия в строке. Разберем небольшой пример, связанный с немецким алфавитом. Немецкая строчная буква ß является эквивалентом ss. Теперь, поскольку ß уже находится в нижнем регистре, то в данном случае, использование например метода lower() нам ничего не даст, но метод casefold() преобразует его в ss.
Пример 1. Приведение в нижний регистр
string = "PYTHON IS AWESOME"
# print lowercase string
print("В нижнем регистре:", string.casefold())
Результат:В нижнем регистре:python is awesome
Пример 2. Сравнение строк
Теперь разберем вышеописанный пример с немецкой строчной буквой.
firstString = "der Fluß"
secondString = "der Fluss"
if firstString.casefold() == secondString.casefold():
print('Строки равны.')
else:
print('Строки не равны.')
После запуска данного скрипта, мы увидим сообщение, что строки равны, так как casefold() привел все к единому регистру.
Выравнивание строки по центру
Для выравнивания строки по центру, в python предусмотрен метод center(). На самом деле, данный метод не совсем выравнивает строку по центру, он возвращает строку, с указанным дополнительным символом, будь то просто пробел, или какой нибудь другой символ. Разберемся с данным методом немного по подробнее.
Метод center() принимает два аргумента:
- width — длина строки с учетом дополненных символов
- fillchar — необязательный аргумент, задается символ который будет являться заполнителем
Пример 1. Метод center() заполнение по умолчанию
string = "Python is awesome"
new_string = string.center(24)
print("Centered String: ", new_string)
#Результат
Centered String: Python is awesome
Пример 2. Метод center() с заполнением символом *
string = "Python is awesome"
new_string = string.center(24, '*')
print("Centered String: ", new_string)
Результат:
Centered String: ***Python is awesome****
Количество символа в строке python
Возможно в вашей практической деятельности, вы столкнетесь с задачей, где вам необходимо подсчитать, какое количество раз повторяется тот или иной символ в строке? С такой задачей, вам поможет справится метод count(). Данный метод вернет количество вхождений искомого символа.
message = 'python is popular programming language'
# ищем символ p
print('Количество вхождений p:', message.count('p'))
# Результат: Количество вхождений p: 4
Как видим, данный метод безупречно выполняет свою функцию, теперь разберем более подробно как там все устроено. Синтаксис метода count() выглядит следующим образом:
string.count(substring, start=..., end=...)
Принимаемые параметры метода count():
Метод count() имеет один обязательный параметр, это непосредственно сама подстрока, которую необходимо найти. По мимо основного аргумента, есть еще необязательные аргументы:
- substring — подстрока которую необходимо найти в строке.
- start — необязательный, задается значение, откуда начинать поиск
- stop — задается значение, где прекратить поиск
В итоге в качестве возвращаемого значения, мы получим количество вхождений искомого символа/подстроки в ткущей строке.
Пример. Считаем количество вхождений подстроки
string = "Python is awesome, isn't it?"
substring = "is"
count = string.count(substring)
print("Вхождений:", count)
Вот таким довольно простым способом, мы можем получить нужный нам результат.
Проверка окончания строки
В Python есть метод endswith(), данный метод вернет True, если строка заканчивается указанным пользователем окончанием, False если это не так.
message = 'Python is fun'
# смотрим, есть ли в предложении окончание fun
print(message.endswith('fun'))
# Результат: True
Метод endswith() принимает несколько параметров. Один обязательный, и два необязательных параметра.
- Окончание/суффикс — подстрока, которую мы ищем в окончании строки
- start — начало поиска
- stop — конец поиска
Пример. Ищем вхождение окончания в строке
text = "Python is easy to learn."
result = text.endswith('to learn')
# получаем False
print(result)
result = text.endswith('to learn.')
# получаем True
print(result)
result = text.endswith('Python is easy to learn.')
# получаем True
print(result)
Как видите в применении данного метода, нет ничего сложного.
Поиск подстроки в строке python
Для поиска подстроки в строке Python, используется специальный метод find(). Метод find() как и большинство остальных методов, работает довольно просто. Если искомый элемент найден в строке, он вернет нам индекс первого вхождения, если не найден он вернет нам -1.
Метод find() принимает три параметра, один обязательный, и два необязательных параметра:
- Подстрока — элемент который необходимо найти
- Начало — индекса начала поиска
- Стоп — Индекса конца поиска
Рассмотрим пример использования данного метода:
quote = 'Let it be, let it be, let it be'
result = quote.find('let it')
print("Substring 'let it':", result)
result = quote.find('small')
print("Substring 'small ':", result)
if (quote.find('be,') != -1):
print("Элемент существует" 'be,'")
else:
print("Элемент не существует")
- В первом примере метод find() нашел первое вхождение и вернул нам значение индекса
- Во втором случае метод find() не нашел вхождение, и соответственно вернул значение -1
- В третьем случае, мы создали условие, если подстрока существует в строке (то есть не равна -1), то верни сообщение о его существовании, в противном случае, сообщение о том, что его нет.
Индекс символа в строке Python
Метод index() возвращает индекс подстроки, внутри строки, в случае если он существует. В случае, если подстрока отсутствует, мы получаем исключение.
text = 'Python is fun'
# Поиск индекса
result = text.index('is')
print(result)
# Результат: 7
Принимаемые параметры метода index()
- Подстрока — искомый элемент в строке
- Начало и конец — начала и конец поиска str[начало:конец]
Возвращаемые значения
- В случае, если подстрока существует в строке, метод index() вернет нам индекс искомого элемента
- В случае, если подстрока отсутствует в строке, метод index() вызовет ошибку ValueError
Ниже рассмотрим сразу два небольших примера, где мы увидим, как нам возвращается индекс строки, и как мы получаем ошибку.
sentence = 'Python programming is fun.'
result = sentence.index('is fun')
print(result)
result = sentence.index('Java')
print(result)