2013-08-07 1 views
-1

파이썬으로 1.5 개월. 나는 파이썬 3.3.2를 WinPython과 함께 사용하고있다. http://code.google.com/p/winpython/ 그리고 여기에서 파이썬 3에 포트 xlwt을 연결한다. https://github.com/hansrwl/xlwt/tree/py3 이것은 값을리스트로 가지고있다. 다음 함수를 사용하여 xls 파일에 올바르게 기록됩니다.파이썬 xls에 목록 사전 쓰기

sampleData = {'Books': ['Book_A', 'Book_B', 'Book_C'], 
       'Author': ['Author_A', 'Author_B', 'Author_C'], 
       'Price': ['Price_A', 'Price_B', 'Price_C']} 

기능 :

def saveDataToNewFile(fileName, sheetName, data): 
    # Creating new workbook 
    wb = xlwt.Workbook() 
    # Creating new worksheet with the name specified 
    ws = wb.add_sheet(sheetName) 
    # Use dictionary keys as first row values(e.g. headers) 
    for colIdx, headerCaption in enumerate(data): 
     ws.write(0, colIdx, headerCaption) 
     # Use dict values as row values for corresponding columns 
     for rowIdx, itemVal in enumerate(data[headerCaption]): 
      ws.write(rowIdx + 1, colIdx, itemVal) 
    wb.save(fileName) 

saveDataToNewFile('sample.xls', 'FirstSaveToXlsSample', sampleData) 

-이 올바르게 저장 및 MS Excel을 열었다. 여기

soup3 = defaultdict(list) 
def init_fields(links_first_lvl): 
    for link in links_first_lvl[1:7]: 
soup3['Дата'].append(BeautifulSoup(urllib.request.urlopen(link).read()).select('.author_data')) 
      soup3['Адрес'].append(link) 
     return soup3 

값으로서리스트와 구조, 사전 (I 콘솔 아름다움 인쇄 pprint 사용)

PPRINT: 
{'url': [ 'http://www.ros.ru/article.php?chapter=1&id=20132503', 
      'http://www.ros.ru/article.php?chapter=1&id=20132411'], 
'date': [[<div class="author_data"><b>Марта Моисеева 
</b> № 30 (973) от 24.07.2013 
<span class="rubr"> ВЛАСТЬ 
</span></div>], 
      [<div class="author_data"><b>Ольга Космынина 
</b> № 29 (972) от 17.07.2013 
<span class="rubr"> ВЛАСТЬ 
</span></div>]] 

saveDataToNewFile('sample2.xls', 'FirstSaveToXlsSample', soup3) 
이다 :

난이 루프에 의해 생성되는 것과 동일한 데이터 구조를 갖는다

문제 : 내가 XLS로 저장하려고하면 나는 오류 얻을 :

을 .....

if isinstance(data, basestring): 
NameError: global name 'basestring' is not defined 

편집 :이 콘솔 Pycharm

Traceback (most recent call last): 
    File "F:/Python/NLTK packages/parse_html_py3.3.2.py", line 91, in <module> 
    saveDataToNewFile('sample2.xls', 'FirstSaveToXlsSample', soup3) 
    File "F:/Python/NLTK packages/parse_html_py3.3.2.py", line 87, in saveDataToNewFile 
    ws.write(rowIdx + 1, colIdx, itemVal) 
    File "F:\WinPython-32bit-3.3.2.0\python-3.3.2\lib\site-packages\xlwt\Worksheet.py", line 1032, in write 
    self.row(r).write(c, label, style) 
    File "F:\WinPython-32bit-3.3.2.0\python-3.3.2\lib\site-packages\xlwt\Row.py", line 259, in write 
    self.__rich_text_helper(col, label, style, style_index) 
    File "F:\WinPython-32bit-3.3.2.0\python-3.3.2\lib\site-packages\xlwt\Row.py", line 276, in __rich_text_helper 
    if isinstance(data, basestring): 
NameError: global name 'basestring' is not defined 

나는 구조가 동일하기 때문에 작동해야하는 이유를 모르겠어요에서 전체 오류 스택이다.

+0

어디에서이 오류가 발생합니까? xls 라이브러리에 있습니까? – Nadh

+0

위의 편집 포스트에 추가되었습니다. –

+2

여러분은 python2 만 사용하고있는 것처럼 보입니다. 'basestring'은 python3에는 존재하지 않습니다. – Bakuriu

답변

0

사용중인 라이브러리는 Python 2.x에서만 작동하도록 작성되었습니다. 최신 파이썬 2.x를 here에서 다운로드하고 다시 시도하십시오.

0

LibreOffice의 오버 헤드가 훨씬 적습니다. LibreOffice 설치 폴더를 열고 거기에있는 모든 현재 예제에서 UNO 참조를 탐색합니다 .XLS로 저장하십시오. 끝난.

0

의견을 제안, 문제는 파이썬 2로 다운 그레이드하기 전에 nosklo에서 알 수 있듯이, 당신은 파이썬 3 가지에서 xlwt 을 설치해야합니다, 그러나, 여전히 파이썬 2 용으로 작성되는 코드를 사용하는 것입니다. 당신이 xlwt 저장소를 복제 한 후에는 설치를 수행 전에

git checkout -b py3 origin/py3 

을 수행하는 것을 잊지 않았다?

기억해도 여전히베이스 스트링 오류가 발생하면 py3 분기가 여전히 불완전하므로 master 분기에서 코드를 실행하려면 Python 2로 다운 그레이드해야합니다. 당신은 변화하는 'STR'아마

0

객체가없는 등의 속성과 오브젝트 유형이 인스턴스인지 아닌지 그냥 테스트부터 테스트가 실패하고, 속성 또는 개체가 이미 있음을 나타냅니다.

나는 당신이 속성 또는 객체으로 hasattr 같은 존재() 또는 자체를 사용하는 고려하는 경우 당신이 자기를 읽을 수 있는지 확인하기 위해 사전 테스트를 수행하는 것이 좋습니다.__dict__ 기존 특성을 찾으십시오.

0
if isinstance(data, basestring): 
    NameError: global name 'basestring' is not defined 

에 'basestring'시도 할 수