Форум сайта python.su
0
Доброе время суток.
Есть файл с разделителем “¤”, для корректной работы необходимо данный файл сплитовать в “лист”, но с данным разделителем проблема, после 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)
Офлайн
20
В какой кодировке написан код? А файл в какой? Какой Python?
Но с другой стороны, replace в той же ситуации работает.
Хотел было спереть на utf8, но с ней нет проблем (проверил) да и у тебя cp1251.
p.s.
s = f.readline()
while s:
# ...
for line in f.xreadlines():
line = line.strip()
# ...
Отредактировано (Дек. 2, 2009 13:11:39)
Офлайн
0
сделай string.split(s, ‘\xa4’), чтобы вопросов по поводу кодировок не возникало
Офлайн
0
Спасибо огромное!
Всё довольно таки просто, даже стыдно =)
Офлайн
0
Добрый день, прошу помочь есть 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)
Офлайн