Где использовать ignorecases в python - PullRequest
0 голосов
/ 27 октября 2019

извините за плохое английское письмо, надеюсь, вы понимаете, о чем я прошу, и я очень плохо знаком с python, и мне нужна помощь с изменяемой регистром переменной. Я думал, что использование regularexpress поможет, но я мог бы подумать, что это неправильно. Я хочу попросить пользователя ввести название песни и посмотреть, существует ли название уже. У меня уже есть тестданные «Больно», «Джонни Кэш». Поэтому, если пользователь наберет «Hurt», он выведет «Заголовок существует», но если пользователь наберет «hurt» с маленькой буквой, он распечатает («Заголовок не существует»)

Любые советы или помощь, какЯ могу убедиться, что он игнорирует регистр символов?

Вот код ниже:

В Python я сделал имя класса Song

class Song(object):

    #Constructor
    def __init__(self, title, artist):

        #Instance variabler
        self._title = title
        self._artist = artist                                                                         

    def checkTitle(self, title):
       #RegEX
       m = re.search(r"([a-zA-Z0-9]*)[\s]([a-zA-Z0-9]*)",title)
       songTitle = t.group(0)
       print (songTitle) # prints out "hurt" in lower cases from user input(look below the code)

       if sangTittel == self._title:
            print("Title exists")
       else:
           print("Title not exists")                                                              

newSong = Song("Hurt", "Johnny Cash")                                                           
title = input("Write the name of the songtitle: ") #user write hurt in lower cases  

checkTitle(title)

Ответы [ 4 ]

1 голос
/ 27 октября 2019

Наилучший способ - использовать строчные буквы следующим образом.

def checkTitle(self, title): 
    songTitle = t.lower() 
    print (songTitlle) 
   if songTittel == self._title: 
       print("Title exists") 
    else: 
       print("Title not exists")

И сделать то же самое в вашем методе __init__.

self._title = title.lower()

Примечание

Выесть также capitalize метод, который может быть интересным.

0 голосов
/ 27 октября 2019

Вам не нужно регулярное выражение.

Как сказал Реза, вы можете использовать upper() или lower(), чтобы исправить проблему, а затем использовать in, чтобы проверить заголовок.

if title.lower() in self._title.lower()

0 голосов
/ 27 октября 2019

Вы можете использовать 're.IGNORECASE' в качестве аргумента для re.search:

re.search(pattern, string, re.IGNORECASE)

и сравнивать вводимые пользователем данные непосредственно с названием песни:

import re

class Song(object):

    #Constructor
    def __init__(self, title, artist):

        #Instance variabler
        self._title = title
        self._artist = artist                                                                         

    def checkTitle(self, title):
       #RegEX       
       if re.search( title, self._title, re.IGNORECASE):
            print("Title exists")
       else:
           print("Title not exists")                                                              

newSong = Song("Hurt", "Johnny Cash")                                                           
title = input("Write the name of the songtitle: ") #user write hurt in lower cases  

newSong.checkTitle(title)
0 голосов
/ 27 октября 2019

В Python вы можете использовать методы str.upper() или str.lower(), которые возвращают копию строки, преобразованную в верхний / нижний регистр. Для вашего кода вы можете использовать его как:

checkTitle(title.lower())

, чтобы вводить строчные буквы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...