Разобрать юникод в тип данных Python - PullRequest
0 голосов
/ 01 апреля 2019

Я работаю над потоком данных с python. Я сталкиваюсь с проблемой при выводе типа данных с использованием встроенного type () в python.

Я пытался кодировать это значение с помощью utf-8 и применять type () к значениям, но он возвращает str типы всех значений, где, как мне требовалось, фактический тип данных Python, такой как int, float.

Я получаю словарь в качестве входных данных, и после этого я анализирую, я читаю его csv reader.

def parse_method(self, string_input):
        # Strip out return characters and quote characters.
        values = re.split(",",
                          re.sub('\r\n', '', re.sub(u'"', '', string_input)))
        reader = csv.reader(values)

         for csv_row in reader:
             decoded_values=[x.decode('utf8') for x in csv_row]
             for value in decoded_values:
                 print(value)
                 print(type(value))

        row = dict( zip(('state', 'gender', 'year', 'name', 'number',
                         'created_date'),
                values))


        return row

Sample Output-

AK
<type 'list'>
F
<type 'list'>
1910
<type 'list'>
Lucy
<type 'list'>
6
<type 'list'>
11/28/2016
<type 'list'>

Expected output-


AK
<type 'str'>
F
<type 'str'>
1910
<type 'int'>
Lucy
<type 'str'>
6
<type 'int'>
11/28/2016
<type 'date'>

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Программа чтения CSV вернет все значения в виде строк.Если вам нужно использовать их как int, float и т. Д. Вы должны преобразовать их из строки в соответствующий тип.

Для соответствующих числовых столбцов csv вы можете сделать простое преобразование строки в int / float, как это

my_int = int("21")
my_float = float("21.1")
0 голосов
/ 01 апреля 2019

Может быть, вы путаете с Python 2 и 3. Str - это юникод в Python 3 https://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html#unicode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...