-1

Python で 1.5 か月。私はWinPython http://code.google.com/p/winpython/でPython 3.3.2を使用しており、ここからPython 3にxlwtをポートしてい ますhttps://github.com/hansrwl/xlwt/tree/py3値をリストとして。以下の関数で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

これが構造、リストを値として持つ辞書です(私は 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

理由はわかりませんが、構造は同じなのでうまくいくはずです。

4

5 に答える 5

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

おそらくオブジェクトにはそのような属性がなく、オブジェクト タイプがインスタンスであるかどうかをテストするだけで、属性またはオブジェクトが既に存在することを意味するため、テストは失敗します。

hasattr() などの属性またはオブジェクトが存在するかどうかを事前にテストして確認することをお勧めします。または、selfを使用することを検討している場合は、 self.__dict__を読み取って既存の属性を見つけることができます。

于 2013-08-12T15:38:28.420 に答える
0

「basestring」を「str」に変更してみてください

于 2013-08-07T19:34:14.753 に答える
0

使用しているライブラリは、python 2.x でのみ動作するように作成されています。こちらから最新の python 2.x をダウンロードして、もう一度お試しください。

于 2013-08-07T10:12:32.700 に答える