python

파이썬 문자열 처리 - split, replace, count

햇농nongnong 2022. 11. 11. 15:03

파이썬으로 문자열 처리

 

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