python
  • parsing
  • tuples
  • urlparse
  • 2014-11-18 3 views 1 likes 
    1

    구문 분석 결과를 텍스트 파일로 저장해야합니다. outfile.write에서 ("n \"항목 +) 형식 오류를 파일 "c.py", 라인 26 : 역 추적 (마지막으로 가장 최근 통화) :html 파일을 구문 분석 한 후 튜플을 문자열로 변환하십시오.

    import urllib 
    from bs4 import BeautifulSoup 
    import urlparse 
    
    path = 'A html file saved on desktop' 
    
    f = open(path,"r") 
    if f.mode == 'r':  
        contents = f.read() 
    
    soup = BeautifulSoup(contents) 
    search = soup.findAll('div',attrs={'class':'mf_oH mf_nobr mf_pRel'}) 
    searchtext = str(search) 
    soup1 = BeautifulSoup(searchtext) 
    
    urls = [] 
    for tag in soup1.findAll('a', href = True): 
        raw_url = tag['href'][:-7] 
        url = urlparse.urlparse(raw_url) 
        urls.append(url) 
        print url.path 
    
    with open("1.txt", "w+") as outfile: 
        for item in urls: 
         outfile.write(item + "\n") 
    

    그러나, 나는이를 얻을 수 튜플 ("str"이 아님) 만 튜플에 연결하십시오.

    튜플을 문자열로 변환하고 텍스트 파일로 저장할 수 있습니까? 감사.

    +0

    'print (item)'을 시도하면 문자열이 아닌 튜플이 표시됩니다. 문자열은 함께 추가 할 수 있습니다. –

    답변

    1

    urls이라는 목록의 각 itemtuple입니다. 튜플은 다른 항목의 컨테이너이며 불변입니다. item + "\n"을 수행 할 때 인터프리터에게 튜플과 불가능한 문자열을 연결하도록 요청합니다. (첫 번째 문자열로 변환됩니다 여기

    with open("1.txt", "w+") as outfile: 
        for item in urls: 
         outfile.write(str(item[1]) + "\n") 
    

    튜플 항목의 첫번째 필드 :

    은 당신이 대신하고 싶은 튜플을 검사하고 OUTFILE에 기록 할 각 항목의 필드 중 하나를 선택이다 다른 일이 생기면) "\ n"으로 연결됩니다. 튜플을 그대로 쓰고 싶다면 다음과 같이 작성하십시오 :

    outfile.write(str(item) + "\n") 
    
    관련 문제