파이썬/파이썬(python) 중급

[26-4 파이썬] 나토 음성 문자 생성하기

Olivia-BlackCherry 2022. 9. 12. 20:00

전화로 레스토랑에 예약을 할 때,
예약자의 성함을 잘못 기록해,
올리비아가 아니라
알리비아라고 예약된 경우가 종종 있었다.

전달 과정에서 왜곡이 일어난 것인데,
입모양을 볼 수 없는
전화통화에서 흔히 일어나는 오류이다.

오늘은
단어 철자를 헷갈리지 않도록 도와서
이런 에러를 줄이는데 유용한 프로그램을 코딩해보려 한다.
바로 나토 음성 문자 생성기이다.

오늘의 미션이다.

<미션>
내 이름을 입력하면,  
각 알파벳에 상응하는 단어를 모은 리스트를 출력하기

read_csv()

csv파일을 읽는다.

import pandas
data = pandas.read_csv("nato_phonetic_alphabet.csv")
print(data)

pandas를 임포트하고 read_csv()로 csv 파일을 읽어온다.

nato_phonetic_alphabet.csv
0.00MB

letter code
0 A Apple
1 B Banana
2 C Christmas
3 D Duck
4 E Echo
5 F Fox
6 G Golf
7 H Hotel
8 I India
9 J Juice
10 K Kite
11 L Love
12 M Map
13 N Nacho
14 O Oasis
15 P Papa
16 Q Quebec
17 R Rose
18 S Slack
19 T Tango
20 U Uniform
21 V Victoria
22 W Wife
23 X X-ray
24 Y Yahoo
25 Z Zoo

to_dict()

우선 간단하게 to_dict()메소드로 데이터를 딕셔너리로 만들어보자.

to_dict() 메소드로 딕셔너리로 데이터를 변환해보면
letter, code 두 개의 키로 나머지 열 값들이 순서대로 나열된다.
그러나 이런 형태는 데이터처리에 큰 도움이 되지 않는다.

print(data.to_dict())

{'letter': {0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E', 5: 'F', 6: 'G', 7: 'H', 8: 'I', 9: 'J', 10: 'K', 11: 'L', 12: 'M', 13: 'N', 14: 'O', 15: 'P', 16: 'Q', 17: 'R', 18: 'S', 19: 'T', 20: 'U', 21: 'V', 22: 'W', 23: 'X', 24: 'Y', 25: 'Z'}, 'code': {0: 'Apple', 1: 'Banana', 2: 'Christmas', 3: 'Duck', 4: 'Echo', 5: 'Fox', 6: 'Golf', 7: 'Hotel', 8: 'India', 9: 'Juice', 10: 'Kite', 11: 'Love', 12: 'Map', 13: 'Nacho', 14: 'Oasis', 15: 'Papa', 16: 'Quebec', 17: 'Rose', 18: 'Slack', 19: 'Tango', 20: 'Uniform', 21: 'Victoria', 22: 'Wife', 23: 'X-ray', 24: 'Yahoo', 25: 'Zoo'}}

iterrows()

다른 방법으로
판다스를 이용해 데이터프레임으로 바꾼 후,
iterrows() 메소드를 이용해서 행별로 (index, row) 데이터를 뽑아보자.
그 다음 딕셔너리 내포를 사용하여 각 행의 키인 letter와 code를 이용해 새로운 딕셔너리를 만든다.

df = pandas.DataFrame(data)
new_dict = {row.letter: row.code for (index,row) in df.iterrows()}
print(new_dict)

{'A': 'Apple', 'B': 'Banana', 'C': 'Christmas', 'D': 'Duck', 'E': 'Echo', 'F': 'Fox', 'G': 'Golf', 'H': 'Hotel', 'I': 'India', 'J': 'Juice', 'K': 'Kite', 'L': 'Love', 'M': 'Map', 'N': 'Nacho', 'O': 'Oasis', 'P': 'Papa', 'Q': 'Quebec', 'R': 'Rose', 'S': 'Slack', 'T': 'Tango', 'U': 'Uniform', 'V': 'Victoria', 'W': 'Wife', 'X': 'X-ray', 'Y': 'Yahoo', 'Z': 'Zoo'}

input()

문자를 입력하도록 한다. 출력되는 데이터타입은 string이다.

upper()

대문자로 바꾼다.

input_word = input("영어로 이름을 입력하세요").upper()



리스트내포를 이용해 새로운 리스트를 만들어준다.

new_list = [new_dict[word] for word in input_word]
print(new_list)

영어로 이름을 입력하세요>> olivia
['Oasis', 'Love', 'India', 'Victoria', 'India', 'Apple']