innate
50
2021-05-26 22:34:00
2
119

파이썬 질문있습니다!


import urllib.request
from bs4 import BeautifulSoup
import csv
import xml.etree.ElementTree as elemTree


field = ["word","word_unit","word_type","original_language","language_type","pronunciation","pos","conjugation","abbreviation","type","origin","allomorph","unit","definition","example"]  
melonList = []
for a in range(5051):
    url = 'https://stdict.korean.go.kr/api/view.do?key=zzzzzzzzzz&method=target_code&q=' + str(a)
    req = urllib.request.Request(url)
    html = urllib.request.urlopen(req).read()
    soup = BeautifulSoup(html'html.parser')

    lst41 = soup.select("channel")

    for i in lst41#or lst42 or lst43 or lst44 or lst45 or lst46 or lst47 or lst48 or lst49 or lst50 or lst51:
        temp = [] # 현재 코드  xml 상위필드 안에 속해있는 하위필드값에 값이 없을경우 공백으로 표시된상황  문제는   하위필드값자체가 없을경우 아예 없는걸로 쳐서 한줄이 당겨져서 표시
        for j in field:
            try:
               if lst41 != field[j]:
                  j += 1
                  return j + 1
               temp.append(i.select_one(j).text.replace('\t','').replace('\r\n','').replace('-',"").replace('^',"").replace(',',''))  # 문장의 ,를 지움 열구분 하기위해  ,로 하기위해
            except:
                   print("공백입니다.")

            melonList.append(temp)

with open('show.csv''a'encoding='utf-8-sig'newline=''as f:   
     writer = csv.writer(f)
     writer.writerow(["표제어","구성 단위","고유어 여부","원어","언어","발음","품사","활용","준말","유형","어원","이형태","구분(어휘, 품사, 공통 문형, 의미)","뜻풀이","예시"])
     writer.writerows(melonList)
질문이 있습니다! 웹에서 xml파일을 파싱하는대 파싱한 xml파일에 제가 리스트에 선언해준(field) xml하위필드값이 없을경우
공백으로 남기고 다음필드값을 읽어들일려고 하는대 따로 방법이 있을까요???

현재는 하위필드가 있고 값만 없을경우 공백이 남고 필드값 자체가 없을경우 csv파일에 열값들이 당겨져서 나와서 고민입니다...



0
  • 답변 2

  • JadeKim
    214
    2021-05-27 00:28:57

    우선 이해가 잘 안가네요....

    질문 내용도 그렇고 코드도 그렇고...


    필드 값이 없으면 공백을 넣고 싶다는 건가요?

    공백을 넣으면 csv파일 상에 안나타난다는 뜻인건가요??


  • innate
    50
    2021-05-27 13:56:47

    필드 값이 없으면 공백을 넣고싶습니다!

  • 로그인을 하시면 답변을 등록할 수 있습니다.