Как удалить часть строки Unicode в Python после специального символа - PullRequest
1 голос
/ 07 октября 2010

сначала короткое лето:

python ver: 3.1 система: Linux (Ubuntu)

Я пытаюсь получить данные через Python и BeautifulSoup.

К сожалениюнекоторые таблицы, которые я пытаюсь обработать, содержат ячейки, в которых существует следующая текстовая строка:

789.82 ± 10.28

Чтобы это работало, мне нужны две вещи:

Какобрабатывать ли «странные» символы, такие как: ±, и как удалить часть строки, содержащую: ±, и все, что справа от этого?

В настоящее время я получаю сообщение об ошибке: SyntaxError: Non-ASCIIcharecter '\ xc2' в файле ......

Спасибо за вашу помощь

[править]:

# dataretriveal from html files from DETHERM
# -*- coding: utf8 -*-

import sys,os,re
from BeautifulSoup import BeautifulSoup


sys.path.insert(0, os.getcwd())

raw_data = open('download.php.html','r')
soup = BeautifulSoup(raw_data)


for numdiv in soup.findAll('div', {"id" : "sec"}):
    currenttable = numdiv.find('table',{"class" : "data"})
    if currenttable:
        numrow=0
        for row in currenttable.findAll('td', {"class" : "dataHead"}):
            numrow=numrow+1

        for col in currenttable.findAll('td'):
            col2 = ''.join(col.findAll(text=True))
            if col2.index('±'):
                col2=col2[:col2.indeindex('±')]
            print(col)
        print(numrow)
        ref=numdiv.find('a')
        niceref=''.join(ref.findAll(text=True))
        print(niceref)

Теперь за этим кодом следуетошибка:

UnicodeDecodeError: кодек «ascii» не может декодировать байт 0xc2 в позиции 0: порядковый номер не находится в диапазоне (128)

Откуда появилась ссылка на ASCII?

1 Ответ

0 голосов
/ 07 октября 2010

Вам нужно закодировать ваш файл Python в utf-8. Иначе, это довольно тривиально:

>>> s = '789.82 ± 10.28'
>>> s[:s.index('±')]
'789.82 '
>>> s.partition('±')
('789.82 ', '±', ' 10.28')
...