powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
9 сообщений из 9, страница 1 из 1
Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
    #39948731
Фотография Masygreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо прочитать файл формата .slk созданный Excel.

С английским проблем нет. А вот русский в виде бреда
2 строка 1 ячейка = .NameInList 'Импорт данных сотрудников из 1С'

Различные комбинации encoding как в открытии файла, так и в преобразовании строки приводят:

Либо к этому -
Код: plaintext
1.
C;Y2;N;K".NameInList 'NAENAiNHiNCiNsNAo NHaNAaNBiNBiNCuNDo NDnNCiNAoNsNBoNHaNBiNAeNCeNCiNCa NAeNKc 1NDN'"

Либо к этому -
Код: plaintext
1.
b'\xef\xbb\xbfC;Y2;N;K".NameInList \'\x1bNAE\x1bNAi\x1bNHi\x1bNCi\x1bNs\x1bNAo \x1bNHa\x1bNAa\x1bNBi\x1bNBi\x1bNCu\x1bNDo \x1bNDn\x1bNCi\x1bNAo\x1bNs\x1bNBo\x1bNHa\x1bNBi\x1bNAe\x1bNCe\x1bNCi\x1bNCa \x1bNAe\x1bNKc 1\x1bNDN\'"'


Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
def main():
    _filename = r'c:\Work\_import.slk'
    print(f'Имя файла: {_filename}')

    with open(_filename, 'r',encoding='ascii') as _fileR:
        FileDataStr = _fileR.read()
        for _line in FileDataStr.splitlines():
            if not _line.upper().find('NAMEINLIST') == -1:
                print(_line)
                print(_line.encode('utf-8-sig'))
                print(_line.encode('cp1251'))
                print(_line.encode('cp1252'))
                print(_line.encode('KOI8-U'))

#  ------------------------------------------------------------------------
if __name__ == "__main__":
    main()



Хелп? Куда искать .. поиск в интернетах совсем плохой стал, либо я не могу правильный вопрос задать.. 42
Предположительно "x1b" - можно отбросить .. но остаток как преобразовать NAE = И
...
Рейтинг: 0 / 0
Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
    #39948758
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Masygreen,

1) попробуйте поменять read-кодировку
Код: python
1.
with open(_filename, 'r',encoding='ascii') as _fileR:



2) если это не сработает, то пробуйте читать файл как бинарный и декодировать
3) посмотрите ссылку https://docs.python.org/3/howto/unicode.html
...
Рейтинг: 0 / 0
Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
    #39948778
Фотография Masygreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,
Да пробовал во всех вариациях.
В режиме 'rb' получаю те же строки, что и в примере только без переносов(
...
Рейтинг: 0 / 0
Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
    #39948803
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Masygreen,

вот как это работает

Код: python
1.
2.
3.
4.
5.
6.
>>> s="привет"
>>> bs = s.encode(encoding="utf-8", errors="strict")
>>> bs
b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
>>> bs.decode(encoding="utf-8", errors="strict")
'привет'
...
Рейтинг: 0 / 0
Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
    #39948862
Фотография Masygreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab, если бы я увидел знакомые их нет ни в cp125X, ни в одной UTF-8,16, 32 ни в 866 я уже все перетыкал..

автор\xd0\xbf\xd1\x80



А тут куда не поверни одна боль, при этом англ. буквы всегда норм ... '.NameInList \x1bNAE\x1bNAi\x1bNHi\x1bNCi\x1bNs\x1bNAo
...
Рейтинг: 0 / 0
Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
    #39949059
Фотография Masygreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Masygreen,

словарь ??? чего правда
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
 /**
     * Build SYLK characters array
     */
    private static function _buildSYLKCharacters()
    {
        self::$_SYLKCharacters = array(
            "\x1B 0"  => chr(0),
            "\x1B 1"  => chr(1),
            "\x1B 2"  => chr(2),
            "\x1B 3"  => chr(3),
            "\x1B 4"  => chr(4),
            "\x1B 5"  => chr(5),
            "\x1B 6"  => chr(6),
            "\x1B 7"  => chr(7),
            "\x1B 8"  => chr(8),
            "\x1B 9"  => chr(9),
            "\x1B :"  => chr(10),
            "\x1B ;"  => chr(11),
            "\x1B <"  => chr(12),
            "\x1B :"  => chr(13),
            "\x1B >"  => chr(14),
            "\x1B ?"  => chr(15),
            "\x1B!0"  => chr(16),
            "\x1B!1"  => chr(17),
            "\x1B!2"  => chr(18),
            "\x1B!3"  => chr(19),
            "\x1B!4"  => chr(20),
            "\x1B!5"  => chr(21),
            "\x1B!6"  => chr(22),
            "\x1B!7"  => chr(23),
            "\x1B!8"  => chr(24),
            "\x1B!9"  => chr(25),
            "\x1B!:"  => chr(26),
            "\x1B!;"  => chr(27),
            "\x1B!<"  => chr(28),
            "\x1B!="  => chr(29),
            "\x1B!>"  => chr(30),
            "\x1B!?"  => chr(31),
            "\x1B'?"  => chr(127),
            "\x1B(0"  => '€', // 128 in CP1252
            "\x1B(2"  => '‚', // 130 in CP1252
            "\x1B(3"  => 'Ж’', // 131 in CP1252
            "\x1B(4"  => '„', // 132 in CP1252
            "\x1B(5"  => '…', // 133 in CP1252
            "\x1B(6"  => '†', // 134 in CP1252
            "\x1B(7"  => '‡', // 135 in CP1252
            "\x1B(8"  => 'Л†', // 136 in CP1252
            "\x1B(9"  => '‰', // 137 in CP1252
            "\x1B(:"  => 'Е ', // 138 in CP1252
            "\x1B(;"  => '‹', // 139 in CP1252
            "\x1BNj"  => 'Е’', // 140 in CP1252
            "\x1B(>"  => 'ЕЅ', // 142 in CP1252
            "\x1B)1"  => '‘', // 145 in CP1252
            "\x1B)2"  => '’', // 146 in CP1252
            "\x1B)3"  => '“', // 147 in CP1252
            "\x1B)4"  => '”', // 148 in CP1252
            "\x1B)5"  => '•', // 149 in CP1252
            "\x1B)6"  => '–', // 150 in CP1252
            "\x1B)7"  => '—', // 151 in CP1252
            "\x1B)8"  => 'Лњ', // 152 in CP1252
            "\x1B)9"  => 'в„ў', // 153 in CP1252
            "\x1B):"  => 'ЕЎ', // 154 in CP1252
            "\x1B);"  => '›', // 155 in CP1252
            "\x1BNz"  => 'Е“', // 156 in CP1252
            "\x1B)>"  => 'Еѕ', // 158 in CP1252
            "\x1B)?"  => 'Её', // 159 in CP1252
            "\x1B*0"  => 'В ', // 160 in CP1252
            "\x1BN!"  => 'ВЎ', // 161 in CP1252
            "\x1BN\"" => 'Вў', // 162 in CP1252
            "\x1BN#"  => 'ВЈ', // 163 in CP1252
            "\x1BN("  => 'В¤', // 164 in CP1252
            "\x1BN%"  => 'ВҐ', // 165 in CP1252
            "\x1B*6"  => 'В¦', // 166 in CP1252
            "\x1BN'"  => 'В§', // 167 in CP1252
            "\x1BNH " => 'ВЁ', // 168 in CP1252
            "\x1BNS"  => 'В©', // 169 in CP1252
            "\x1BNc"  => 'ВЄ', // 170 in CP1252
            "\x1BN+"  => 'В«', // 171 in CP1252
            "\x1B*<"  => 'В¬', // 172 in CP1252
            "\x1B*="  => 'В­', // 173 in CP1252
            "\x1BNR"  => 'В®', // 174 in CP1252
            "\x1B*?"  => 'ВЇ', // 175 in CP1252
            "\x1BN0"  => 'В°', // 176 in CP1252
            "\x1BN1"  => 'В±', // 177 in CP1252
            "\x1BN2"  => 'ВІ', // 178 in CP1252
            "\x1BN3"  => 'Ві', // 179 in CP1252
            "\x1BNB " => 'Вґ', // 180 in CP1252
            "\x1BN5"  => 'Вµ', // 181 in CP1252
            "\x1BN6"  => 'В¶', // 182 in CP1252
            "\x1BN7"  => 'В·', // 183 in CP1252
            "\x1B+8"  => 'Вё', // 184 in CP1252
            "\x1BNQ"  => 'В№', // 185 in CP1252
            "\x1BNk"  => 'Вє', // 186 in CP1252
            "\x1BN;"  => 'В»', // 187 in CP1252
            "\x1BN<"  => 'Вј', // 188 in CP1252
            "\x1BN="  => 'ВЅ', // 189 in CP1252
            "\x1BN>"  => 'Вѕ', // 190 in CP1252
            "\x1BN?"  => 'Вї', // 191 in CP1252
            "\x1BNAA" => 'ГЂ', // 192 in CP1252
            "\x1BNBA" => 'ГЃ', // 193 in CP1252
            "\x1BNCA" => 'Г‚', // 194 in CP1252
            "\x1BNDA" => 'Гѓ', // 195 in CP1252
            "\x1BNHA" => 'Г„', // 196 in CP1252
            "\x1BNJA" => 'Г…', // 197 in CP1252
            "\x1BNa"  => 'Г†', // 198 in CP1252
            "\x1BNKC" => 'Г‡', // 199 in CP1252
            "\x1BNAE" => 'Г€', // 200 in CP1252
            "\x1BNBE" => 'Г‰', // 201 in CP1252
            "\x1BNCE" => 'ГЉ', // 202 in CP1252
            "\x1BNHE" => 'Г‹', // 203 in CP1252
            "\x1BNAI" => 'ГЊ', // 204 in CP1252
            "\x1BNBI" => 'ГЌ', // 205 in CP1252
            "\x1BNCI" => 'ГЋ', // 206 in CP1252
            "\x1BNHI" => 'ГЏ', // 207 in CP1252
            "\x1BNb"  => 'Гђ', // 208 in CP1252
            "\x1BNDN" => 'Г‘', // 209 in CP1252
            "\x1BNAO" => 'Г’', // 210 in CP1252
            "\x1BNBO" => 'Г“', // 211 in CP1252
            "\x1BNCO" => 'Г”', // 212 in CP1252
            "\x1BNDO" => 'Г•', // 213 in CP1252
            "\x1BNHO" => 'Г–', // 214 in CP1252
            "\x1B-7"  => 'Г—', // 215 in CP1252
            "\x1BNi"  => 'Ø', // 216 in CP1252
            "\x1BNAU" => 'Г™', // 217 in CP1252
            "\x1BNBU" => 'Гљ', // 218 in CP1252
            "\x1BNCU" => 'Г›', // 219 in CP1252
            "\x1BNHU" => 'Гњ', // 220 in CP1252
            "\x1B-="  => 'Гќ', // 221 in CP1252
            "\x1BNl"  => 'Гћ', // 222 in CP1252
            "\x1BN{"  => 'Гџ', // 223 in CP1252
            "\x1BNAa" => 'Г ', // 224 in CP1252
            "\x1BNBa" => 'ГЎ', // 225 in CP1252
            "\x1BNCa" => 'Гў', // 226 in CP1252
            "\x1BNDa" => 'ГЈ', // 227 in CP1252
            "\x1BNHa" => 'Г¤', // 228 in CP1252
            "\x1BNJa" => 'ГҐ', // 229 in CP1252
            "\x1BNq"  => 'Г¦', // 230 in CP1252
            "\x1BNKc" => 'Г§', // 231 in CP1252
            "\x1BNAe" => 'ГЁ', // 232 in CP1252
            "\x1BNBe" => 'Г©', // 233 in CP1252
            "\x1BNCe" => 'ГЄ', // 234 in CP1252
            "\x1BNHe" => 'Г«', // 235 in CP1252
            "\x1BNAi" => 'Г¬', // 236 in CP1252
            "\x1BNBi" => 'Г­', // 237 in CP1252
            "\x1BNCi" => 'Г®', // 238 in CP1252
            "\x1BNHi" => 'ГЇ', // 239 in CP1252
            "\x1BNs"  => 'Г°', // 240 in CP1252
            "\x1BNDn" => 'Г±', // 241 in CP1252
            "\x1BNAo" => 'ГІ', // 242 in CP1252
            "\x1BNBo" => 'Гі', // 243 in CP1252
            "\x1BNCo" => 'Гґ', // 244 in CP1252
            "\x1BNDo" => 'Гµ', // 245 in CP1252
            "\x1BNHo" => 'Г¶', // 246 in CP1252
            "\x1B/7"  => 'Г·', // 247 in CP1252
            "\x1BNy"  => 'Гё', // 248 in CP1252
            "\x1BNAu" => 'Г№', // 249 in CP1252
            "\x1BNBu" => 'Гє', // 250 in CP1252
            "\x1BNCu" => 'Г»', // 251 in CP1252
            "\x1BNHu" => 'Гј', // 252 in CP1252
            "\x1B/="  => 'ГЅ', // 253 in CP1252
            "\x1BN|"  => 'Гѕ', // 254 in CP1252
            "\x1BNHy" => 'Гї', // 255 in CP1252
        );
    }
...
Рейтинг: 0 / 0
Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
    #39949101
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Masygreen,

а может быть стоит кодировку исходного файла посмотреть?
...
Рейтинг: 0 / 0
Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
    #39949205
Фотография Masygreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,
UTF-8

Устал я и решил в лоб

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
# Словарь для SLK
    a_dict = {"\\x1bNAA": "А", "\\x1bNBA": "Б", "\\x1bNCA": "В", "\\x1bNDA": "Г"
        , "\\x1bNHA": "Д", "\\x1bNJA": "Е", "\\x1bNH ": "Ё", "\\x1bNa": "Ж", "\\x1bNKC": "З"
        , "\\x1bNAE": "И", "\\x1bNBE": "Й", "\\x1bNCE": "К", "\\x1bNHE": "Л"
        , "\\x1bNAI": "М", "\\x1bNBI": "Н", "\\x1bNCI": "О", "\\x1bNHI": "П", "\\x1bNb": "Р"
        , "\\x1bNDN": "С", "\\x1bNAO": "Т", "\\x1bNBO": "У", "\\x1bNCO": "Ф"
        , "\\x1bNDO": "Х", "\\x1bNHO": "Ц", "\\x1b-7": "Ч", "\\x1bNi": "Ш", "\\x1bNAU": "Щ", "\\x1bNBU": "Ъ"
        , "\\x1bNCU": "Ы", "\\x1bNHU": "Ь", "\\x1b-=": "Э", "\\x1bNl": "Ю", "\\x1bN{": "Я"
        , "\\x1bNAa": "а", "\\x1bNBa": "б", "\\x1bNCa": "в", "\\x1bNDa": "г", "\\x1bNHa": "д", "\\x1bNJa": "е",
              "\\x1b+8": "ё", "\\x1bNq": "ж", "\\x1bNKc": "з"
        , "\\x1bNAe": "и", "\\x1bNBe": "й", "\\x1bNCe": "к", "\\x1bNHe": "л", "\\x1bNAi": "м", "\\x1bNBi": "н",
              "\\x1bNCi": "о", "\\x1bNHi": "п", "\\x1bNs": "р"
        , "\\x1bNDn": "с", "\\x1bNAo": "т", "\\x1bNBo": "у", "\\x1bNCo": "ф", "\\x1bNDo": "х", "\\x1bNHo": "ц",
              "\\x1b/7": "ч", "\\x1bNy": "ш", "\\x1bNAu": "щ"
        , "\\x1bNBu": "ъ", "\\x1bNCu": "ы", "\\x1bNHu": "ь", "\\x1b/=": "э", "\\x1bN|": "ю", "\\x1bNHy": "я"
              }

                        with open(_FULLPATHISH, 'r') as _fileR:
                            _FileDataStr = _fileR.read()
                            for _line in _FileDataStr.splitlines():
                                    _l1 = str(_line.encode('UTF-8'))
                                    for key in a_dict:  # через словарь разбираем текст
                                        _l1 = _l1.replace(key, a_dict[key])
...
Рейтинг: 0 / 0
Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
    #39949283
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Masygreen,

зачем вы кодируете строку в UTF-8?!!!
Код: python
1.
_l1 = str(_line.encode('UTF-8'))



попробуйте так
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
def main():
    _filename = r'c:\Work\_import.slk'
    print(f'Имя файла: {_filename}')

    with open(_filename, 'r',encoding='utf-8') as _fileR:
        FileDataStr = _fileR.read()
        for _line in FileDataStr.splitlines():
            if not _line.upper().find('NAMEINLIST') == -1:
                print(_line)
  
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как прочитать кириллицу в SYLK (MS Excel .slk)? Py3.8
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]