Как мне найти строку для символа ASCII в Jython?

Я извлекаю данные из базы данных, в которой в качестве разделителя используется символ ASCII 254. Я озадачен тем, как искать строку, возвращаемую для 254, а затем создавать словарь на основе этого?

Мой класс питона

import sys
sys.path.append('C:\\IBM\\UniDK\\uojsdk\\lib\\asjava.jar')
import os.path

from asjava.uniclientlibs import UniDynArray, UniDataSet
from asjava.uniobjects import UniSession, UniFile
from asjava.uniobjects import UniSubroutineException
from asjava.uniobjects.UniObjectsTokens import AT_FM

class u2py :

        def __init__ (self):
            self.conn = UniSession()

        def get_db(self):
            """ establish a connection to Unidata """
            username = 'dbuser'
            password = 'SuperSecretPassword'
            return  self.conn.connect("host", username, password, "ACCOUNT")

        def close_db(self):
            """ drop connection to Unidata """
            if self.conn.isActive():
                self.conn.disconnect()

        def open_file(self,file_name,rec):
            """ open a U2 file read a record and return it """
            uvfile = self.conn.open(file_name)
            uvrec = uvfile.read(rec)
            dataset = uvrec
            uvfile.close()
            return dataset

        def open_field(self,file_name,rec,field):
                    """ open a U2 file read a record and return it """
                    uvfile = self.conn.open(file_name)
                    uvrec = uvfile.readField(rec,field)
                    dataset = uvrec
                    uvfile.close()
                    return dataset

Вот мой код в консоли:

from u2py import *

u2 = u2py()
c = u2.get_db() #creates the connection to the DB
c #actually makes the connection
rec = u2.open_file('SOFILE','SO133700')
print rec

Который затем выводит это на экран:

ZZZAA■XN3■CEL■931819501■20020215■BWI/PP■■

"■" на самом деле является полевой меткой chr(254)

РЕДАКТИРОВАТЬ:

Когда я использую это:

    >>>rec = u2.open_file('SOFILE','SO133699').split(chr(254))

Я получаю эту ошибку

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'asjava.uniclientlibs.UniString' object has no attribute 'split'

РЕДАКТИРОВАТЬ и ОКОНЧАТЕЛЬНЫЙ ответ:

Использование UniObjects Java

rec.toString().split(chr(254)) 

УСПЕХ!!!!

2 ответа

Решение

your_string.split(chr(254))например,

>>> "foo\xFEbar\xFEbaz".split(chr(254))
['foo', 'bar', 'baz']

Это возвращает список. Как построить словарь из этого я оставлю вам, так как я не знаю, что вы хотите для ключей и значений.

Чтобы найти строку для символа ASCII 254, вы можете сделать:

if '\xFE' in db_string:
    # 254 char was in the string

или, чтобы найти положение

delimiter_pos = db_string.find('\xFE')  # will be -1 if delimiter not found

Вы должны будете объяснить, что вы подразумеваете под "создать словарь на основе этого" более подробно, однако. Вы имеете в виду словарь имен столбцов и значений? Какой пример строки ответа из базы данных?

Другие вопросы по тегам