엑셀 데이터(CSV) 파일에서 텍스트 추출

By | 2023-02-24

소스 코드: http://t2bot.com/dataroom/csv2txt.20230224.zip


#. [ms-excel]에서 저장된 파일:

스프레드 시트로 읽은 후에 필요한 필드를 복사한 후 [~.txt] 파일로 저장

#.필드가 구분된 텍스트 형식 [~.csv/~tsv]):

별도의 데이터 로딩 프로그램으로 해당 필드만 텍스트 파일로 저장
해당 소스 코드를 올려 놓았으니 이 파일을 참고하여 텍스트로 저장하거나 함수 호출 방식으로 텍스트를 변수로 전달

===> 책 20장에 [영화 추천 알고리즈]에 데이터 프레임과 [~.csv/~tsv] 파일 처리에 대한 기초가 있습니다.

다음은 ‘hgcsv_pd_101_c.py’ 소스 코드입니다.

from hgcsv__panda import ReadCsvFieldTextByPandas
#---
# "test1_c.csv" # 필드 3개: [순서, 서울, 설명]
"""
순서,수도,설명
1,서울,대한민국의 수도
2,도쿄,일본의 수도
3,런던,영국의 수도
4,멜버른,호주의 도시
"""
#---
filepath = '' # 현재 폴더에 있는 경우
#=filepath = './../../testtext/hgdatsci/_csv_/' # 다른 폴더에 있는 경우
csv_file = "test1_c.csv" # 필드 3개: [순서, 서울, 설명]
csv_data = filepath + csv_file

# csv 읽기
print("# 2번째 필드를 텍스트로 전환")
field_pos = 1 # 2번째 필드(0-base)
field_texts = ReadCsvFieldTextByPandas(csv_data, field_pos)
print(field_texts)
print()

print("# 3번째 필드를 텍스트로 전환")
field_pos = 2 # 3번째 필드(0-base)
field_texts = ReadCsvFieldTextByPandas(csv_data, field_pos)
print(field_texts)
print()

print("# 2번째와 3번째 필드를 텍스트로 전환")
field_texts_all = ""
field_pos = 1 # 2번째 필드(0-base)
field_texts = ReadCsvFieldTextByPandas(csv_data, field_pos)
field_texts_all += field_texts
field_pos = 2 # 3번째 필드(0-base)
field_texts = ReadCsvFieldTextByPandas(csv_data, field_pos)
field_texts_all += field_texts
print(field_texts_all)
print()

다음은 ‘hgcsv__panda.py’ 소스 코드입니다.

def ReadCsvFieldTextByPandas(filename, text_field_inx:int=0, debugPrint:bool=False)->str:
    import pandas as pd # not found ==>>pip install pandas
    # csv 읽기
    csv_data =  pd.read_csv(filename)
    if(text_field_inx >= len(csv_data.columns.values)): # 필드 범위 초과
        text_field_inx = (len(csv_data.columns.values) - 1)
    if(text_field_inx < 0): # 필드 범위 아래
        text_field_inx = 0
    #
    field_pos = text_field_inx # ?번째 필드(0-base)
    field_texts = ""
    datanum = len(csv_data)
    for i in range(datanum):
        field_data = csv_data.iloc[i][field_pos] # [rec-inx][col-inx]
        field_texts += field_data
        field_texts += '\n' # 문단 구분 추가(레코드 단위별로)
    #
    return field_texts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Time limit is exhausted. Please reload CAPTCHA.