파이썬으로 문자열 처리
1) split - 문자열 분리
- 위와 같이 tab 전의 앞부분만 가져오고 싶을 때
- .split('split할 기준')[자른 후 몇번째]
2) replace - 문자열 내의 특정 문자 치환
- 문자열.replace('바꾸고 싶은 문자열', '바꿀 문자열')
3) count - 문자열 내의 특정 문자 갯수 새기
ex) enter = wrd.count('\n')
- wrd 변수에 저장된 문자열에서 엔터 개수를 세서 enter 변수에 갯수 저장
예시)
file_list = os.listdir('/home/haeyoung/nia12/nia_dataset/data_preprocess/fr_data/')
file_path = '/home/haeyoung/nia12/nia_dataset/data_preprocess/fr_data/'
for filename in file_list:
if filename.endswith('wav'):
wav_name = filename
txt_name = wav_name.replace('.wav','.txt')
fw = wave.open(file_path+wav_name, 'r')
length = fw.getnframes()
with open(file_path+txt_name, 'r') as f:
lines = f.read()
tsv_line = wav_name + '\t' + str(length) + '\n'
#make word transcription
wrd = lines.replace("ˈ", "")
wrd = wrd.replace("'", "")
wrd = wrd.replace(',', '')
wrd = wrd.replace('.', '')
wrd = wrd.replace('-', '')
wrd = wrd.replace('(en)', '')
wrd = wrd.replace('(fr)', '')
## '\n' preprocess
enter = wrd.count('\n')
if enter >= 2 :
wrd = wrd.replace('\n', ' ')
wrd = wrd + '\n'
wrd.strip()
wrd_line = wrd
#make phoneme transcription
phn = wrd.replace(' ', '|')
phn = ' '.join(phn)
phn = phn.replace('ɔ ̃','ɔ̃')
phn = phn.replace('œ ̃','œ̃')
phn = phn.replace('ɛ ̃','ɛ̃')
phn = phn.replace('ɑ ̃','ɑ̃')
phn = phn.replace('ɛ ː', 'ɛː')
phn_line = phn
#make dictionary
phns = phn.split(' ')
dic_list = []
for ph in phns :
dic_line = ph + ' 1\n'
if dic_line in dic_list: pass
else: dic_list.append(dic_line)
dic_list = list(set(dic_list))
tsv_list.append(tsv_line)
wrd_list.append(wrd_line)
phn_list.append(phn_line)
else: pass
'python' 카테고리의 다른 글
docker 접속, container 이미지 생성하기 (0) | 2023.07.25 |
---|---|
os.listdir - 파이썬 디렉토리 내 파일 확인, 개수 새기, 파일 다루기 (0) | 2022.11.11 |
파이썬 shutil 라이브러리로 쉽게 파일 복사하기 (0) | 2022.11.11 |
파이썬으로 파일 읽기/쓰기(2) - CSV 모듈 사용 (0) | 2022.04.22 |
파이썬으로 파일 읽기/쓰기 - read(), readlines() (0) | 2021.12.08 |
댓글