Как найти первую букву в строке python

С помощью какой функции можно как-то считать первую букву строки? К примеру: У нас есть переменная a, содержащая строку Евгений.
Мне нужно, чтобы первая буква была считана какой то функцией и передана в другую переменную. Что я хочу осуществить:

c = 'Евгений'
... 
if первая буква переменной a == 'c':
    print("первая буква:", 'c')

Надеюсь меня поймут…

SmellyNS's user avatar

SmellyNS

7703 серебряных знака16 бронзовых знаков

1

c = 'Евгений'
a = 'Е'

if a == c[0]:
    print(f"Первая буква: {c[0]}.")

ответ дан 7 мая 2020 в 16:16

Данилкин's user avatar

ДанилкинДанилкин

5131 золотой знак4 серебряных знака11 бронзовых знаков

Вы учебник читать пробовали? А Гууглить самостоятельно?

s="Первая буква имени"
c = s[0]
print("первая буква:", c)

первая буква: П

ответ дан 7 мая 2020 в 16:10

passant's user avatar

passantpassant

11.5k2 золотых знака9 серебряных знаков16 бронзовых знаков

Для этого не нужна функция, можно взять первый символ строки с помощью обращения к индеску строки:

s = "Евгений"
print(s[0]) # вывести нулевой символ строки s

Результат:

Е

ответ дан 7 мая 2020 в 16:10

Евгений's user avatar

ЕвгенийЕвгений

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

user1357015's user avatar

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

sberry's user avatar

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 DiPiazza's user avatar

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's user avatar

Ó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

Apoorv Gunjan Pathak's user avatar

Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя, и в какой-то момент требуется вывести эту информацию в формате 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 и опишите проблему, затем отправьте нам. В течение нескольких дней мы улучшим формулировку или исправим опечатку

Что-то не получается в уроке?

Загляните в раздел «Обсуждение»:

  1. Изучите вопросы, которые задавали по уроку другие студенты — возможно, ответ на ваш уже есть
  2. Если вопросы остались, задайте свой. Расскажите, что непонятно или сложно, дайте ссылку на ваше решение. Обратите внимание — команда поддержки не отвечает на вопросы по коду, но поможет разобраться с заданием или выводом тестов
  3. Мы отвечаем на сообщения в течение 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

Как видите, данный метод работает достаточно просто:

  1. Не принимает никаких значений
  2. Возвращает строку с заглавной буквы (не изменяет исходную строку)

Вполне логичным выглядит вопрос, а что если строка начинается не с алфавитного символа? А давайте посмотрим.

Пример 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)

Добавить комментарий