Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 2, 2009 12:57:15

Hedgy
От:
Зарегистрирован: 2009-12-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с split('¤')

Доброе время суток.

Есть файл с разделителем “¤”, для корректной работы необходимо данный файл сплитовать в “лист”, но с данным разделителем проблема, после SPLIT-а выходит простая строка а не “лист” если же заменить данный разделитель на более часто встречающейся (например “|”) - без проблем.

Самое интересное что если в самом листинге прописать
s = ‘1234tRs¤’
и выполнить
s = s.replace('¤','|')
то без проблем меняется

но в таком подходе :

f = open(path_to_file)
s = f.readline()
while s:
s = string.strip(s)
print “| -> ”+s
if s <> ‘':
sl = string.split(s, ’¤')
<обработка по эл-там листа>
s = f.readline()

f.close()

ничего не получается
возвращается
111111¤ 11111¤ ¤11111111¤ 2346.12¤“ВЕРНЫЙ-1” ¤РАСХОДЫ ¤ ¤17¤856¤ ¤ ¤
и следовательно
['111111\xa4 11111\xa4 \xa411111111\xa4 2346.12\xa4\xca\xd1\xca “\xc2\xc5\xd0\xcd\xdb\xc9-1” и т.д. как видно простая строка как единый элемент листа.

Есть идеи почему не воспринимается данный разделитель ( ¤ ) ? Из-за кодировки ? кода в таблице ASCII?



Отредактировано (Дек. 2, 2009 12:57:36)

Офлайн

#2 Дек. 2, 2009 13:10:21

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Проблема с split('¤')

В какой кодировке написан код? А файл в какой? Какой Python?
Но с другой стороны, replace в той же ситуации работает.
Хотел было спереть на utf8, но с ней нет проблем (проверил) да и у тебя cp1251.

p.s.

s = f.readline()
while s:
# ...
Лучше заменить на:
for line in f.xreadlines():
line = line.strip()
# ...
..bw



Отредактировано (Дек. 2, 2009 13:11:39)

Офлайн

#3 Дек. 2, 2009 18:11:16

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с split('¤')

сделай string.split(s, ‘\xa4’), чтобы вопросов по поводу кодировок не возникало



Офлайн

#4 Дек. 3, 2009 07:08:53

Hedgy
От:
Зарегистрирован: 2009-12-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с split('¤')

Спасибо огромное!
Всё довольно таки просто, даже стыдно =)



Офлайн

#5 Март 17, 2016 12:53:19

kolobok_kz
Зарегистрирован: 2016-03-17
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с split('¤')

Добрый день, прошу помочь есть exel документ, и есть скрипт по который не правильно работает
Работает если в файле exel документ разделён ‘|’ знаком! Мне в моем документе все аккуратно разделено по колонам!
Этот скрипт работает правильно если (2154200|Жакупов А С Астана, ул.Бейсекбаева д.14 кв.60|140910198579|2014-09-07 03:32:00|25.09.2014|12|Сумен жабдықтауTҚ/Водоснабжение по…..)
А у меня (Объект аренды Наименование ИИН/БИН Договор Лицевой) подними
Вираж (Арендаторы Астана 49849 №23 0007)

#Обработка закачиваемого файла
f = open(path_to_xls)
s = f.readline()
while s:
s = string.strip(s)
if s <> ‘':
sl = string.split(s, ’|')
cb = DocCB.createElement(cbTag)
nod.appendChild(cb)

for mmm in SellNod:
atrName = mmm.attributes.getNamedItem('NAME').nodeValue
iCnt= int(mmm.attributes.getNamedItem('CNT').nodeValue)
try:
cb.setAttribute(atrName, cssutil.tostr(sl))
except Exception:
print('Не удалось записать строку №'+str(iCnt))

#print cb.setAttribute(atrName, cssutil.tostr(sl))
#cb.setAttribute(atrName, cssutil.tostr(sl).decode('cp1251'))
#print cb.setAttribute(atrName, cssutil.tostr(sl).decode('cp1251'))

s = f.readline()

f.close()

if baseIn=='1':
dsOut.clear()
dsOut.append()
dsOut = DocCB.xml.encode('utf-8')
else:
print OutDoc.xml, ‘Импортирование возможно только в базу.’
del(Doc)
del(DocCB)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version