Python을 처음 접했고 제목이 충분히 구체적이지 않은 경우 사과를 드리고 싶지만 다른 단어로 표현할 방법을 모르겠습니다. 또한이 질문이 중복 된 경우 사과드립니다. 내가 말했듯이, 나는 무엇을 찾아야할지 정말로 모른다. 어쨌든, 내가하고 싶은 일은 다음과 같습니다.
다음과 같은 목록이 있습니다 :
names = ['william shakespeare', 'shakira', 'tom ford', 'tim ford']
사용자가 이름을 입력 할 수 있기를 원하므로
name = input('Enter name:')
를 사용하겠습니다.
여기에 내가 붙어있는 곳이 있습니다. 사용자가
shak
와 같은 문자열을 입력 할 수 있기를 바랍니다.
프로그램에
1. William Shakespeare 2. Shakira
를 표시하십시오.
또는 사용자가
ford
를 넣은 경우
프로그램에
1. Tom Ford 2. Tim Ford
를 보여주십시오
, 사용자가
shakespeare
와 같이 더 구체적이되면
프로그램에
1. William Shakespeare
만 표시하십시오
.
이것이 정규식 질문이라고 생각하지만 정규식은 매우 혼란 스럽습니다. 나는 쓸모없는 몇 가지 비디오를 보았습니다. 모든 유형의 도움에 감사드립니다. 미리 감사드립니다!
- 답변 # 1
- 답변 # 2
이 작업이 효과가 있습니까? 출력이 원하는 방식이 아닌 경우 나중에 해당 부분을 처리 할 수있을 것으로 기대합니다. 논리는 적용 가능한 각 이름을 찾습니다.
names = ['william shakespeare', 'shakira', 'tom ford', 'tim ford'] while True: name = input('Enter name: ') print([entry for entry in names if name in entry])
- 답변 # 3
names = ['william shakespeare', 'shakira', 'tom ford', 'tim ford'] search = str(input("Please enter search term ")) ref = list(search.lower()) # this is your search text out = [] count = 1 ind = 0 for i in names: # loops over your list #print () #take the hash out to see what is i for j in list(i.lower()): # list converts your variable into a list ie shakira = ['s','h'..] if j == ref[ind]: ind += 1 else: ind = 0 if ind == len(ref): #ind is gonna go over each index in ref, if ind = the length of your # search text then you have found a match out.append(i) ind = 0 break if len(out) == 0: out.append(" Nothing found ") count = 0 for i in out: print ("{}. {}".format(count,i), end = "\t\t") count += 1
좋아! 이 작업을 수행하는 방법에는 여러 가지가 있으며 가능한 한 간단하게 만들려고 노력했습니다. 결함 : Will과 William과 같이 비슷한 두 개의 이름이 있고 유언장을 검색하면 두 이름을 모두 얻게됩니다. 윌리엄을 검색하면 Willaim 만 제공합니다. 또한 디자인은 효율적이지 않고 두 개의 for 루프이며 기본적으로 목록의 문자 수 (총 문자 수)와 선형으로 실행됩니다.이 방법을 참조하십시오.
list = ['william shakespeare', 'shakira', 'tom ford', 'tim ford'] def get_matching_term(input, list): matches = [] for word in list: if input.lower() in word.lower(): matches.append(word) return matches thing_to_match = raw_input("Enter name to find:") matches = get_matching_term(thing_to_match, list) for idx, match in enumerate(matches): print("Match #" + str((idx + 1)) + ": " + match)
그러면 그렇게 불러 낼 수 있습니다.
python test.py Enter name to find: shak Match #1: william shakespeare Match #2: shakira
- 답변 # 4
정규식은 매우 유용하지만이 특정 예에서는 정규식이 필요하지 않습니다. 두 문자열 모두에서 string.lower ()를 사용하면이 대소 문자를 구분하지 않습니다.
i=0 For item in names: if name.lower() in item.lower(): i++ print str(i) + '. ' + item
관련 자료
- Python은 목록에서 유사한 항목을 제거합니다
- for loop - 파이썬에서 사전을 반복 할 때 나머지 항목을 얻는 방법은 무엇입니까?
- python - 파이썬 - 가위 바위 보 게임에서 유효한 입력을 어디에서 확인합니까?
- similarity - 파이썬의 여러 문자열에서 비슷한 것을 어떻게 찾습니까?
- 파이썬 프로그램에서 입력을 어떻게 사용합니까?
- javascript - 일치하는 항목이 서로 옆에있는 경우에만 그룹화하려면 어떻게합니까
- tic tac toe - 색인 위치를 사용하여 보드에 사용자 입력을 추가하는 Python Tic Tac Toe 문제
- Python Selenium Send Keys 함수가 텍스트를 입력하지 않습니다
- Python에서 입력 형식을 소수 가격으로 지정
- Python - 파이썬 - 사용자 입력이 조건과 일치하는지 확인하는 기능
- 파이썬 스크립트에서 작동하지 않는 입력 함수
- multithreading - 키보드 입력 (Pynput을 통한) 및 Python 스레드
- regex - 정규식을 사용하는 Python 일치 대시
- 범위 (시작, 중지, 단계)와 유사한 윤년 함수를 만들기 위해 Python을 얻는 방법은 무엇입니까?
- 사용자 입력을 받아 파이썬으로 문서를 제공하는 코드를 작성 중입니다 그러나 사용자 입력의 문자열은 파이썬에서 따옴표와 함께 사용됩니다
- pandas - 파이썬에서 일치하는 단어를 반환
- Python 사전이 사전에 잘못된 입력을 받고있었습니다
- Python에서 for 루프의 나머지 항목을 검색하려면 어떻게해야합니까?
- 파이썬에서 사용자 입력 가능성을 읽는 빠른 방법
- C #을 사용한 사용자 입력 후 Python 출력을 C #에 표시
- python : 대괄호 안의 숫자 캡처
- python : 섹션 번호 및 설명을 추출하는 정규식
- python : Pandas : 반복되지 않는 두 일치 항목으로 데이터 프레임 만들기
- python : 정규식 오류 : 위치 0에서 반복 할 항목이 없습니다.
- python : 정규식에서 문자를 포함하지 않고 문자까지 일치시키는 방법은 무엇입니까?
- sqlalchemy ORM을 통해 Python에서 정규식으로 MySQL DB를 검색하는 방법
- python : RegEx 검색 단어 및 일부 문제 방지
- python : 특정 문자 뒤의 모든 단어를 얻기위한 정규식 작성
- Python을 사용하여 텍스트 파일에서 반복되는 패턴 수 검색
정규식은 제 생각에는 과잉입니다. for 루프를 사용하여 목록을 반복 할 수 있습니다. 그런 다음
in
를 사용하여 연산자를 사용하면 입력 한 문자열이 문자열 내에 있는지 확인할 수 있습니다 (하위 문자열이라고 함). 간단한 예를 들어 보겠습니다.Python을 처음 사용한다고 말했기 때문에 목록 이해 나 복잡한 것을 사용하지 않았습니다.