озадаченный получение значения ключа из понимания

Свойство StreamReader.CurrentEncoding редко возвращает правильную кодировку текстового файла для меня. У меня был больший успех, определяя конечность файла, анализируя его байтов (BOM):

/// <summary>
/// Determines a text file's encoding by analyzing its byte order mark (BOM).
/// Defaults to ASCII when detection of the text file's endianness fails.
/// </summary>
/// <param name="filename">The text file to analyze.</param>
/// <returns>The detected encoding.</returns>
public static Encoding GetEncoding(string filename)
{
    // Read the BOM
    var bom = new byte[4];
    using (var file = new FileStream(filename, FileMode.Open, FileAccess.Read))
    {
        file.Read(bom, 0, 4);
    }

    // Analyze the BOM
    if (bom[0] == 0x2b && bom[1] == 0x2f && bom[2] == 0x76) return Encoding.UTF7;
    if (bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf) return Encoding.UTF8;
    if (bom[0] == 0xff && bom[1] == 0xfe) return Encoding.Unicode; //UTF-16LE
    if (bom[0] == 0xfe && bom[1] == 0xff) return Encoding.BigEndianUnicode; //UTF-16BE
    if (bom[0] == 0 && bom[1] == 0 && bom[2] == 0xfe && bom[3] == 0xff) return Encoding.UTF32;
    return Encoding.ASCII;
}

. В качестве побочного примечания вы можете изменить последнюю строку этого метода для возврата Encoding.Default, поэтому кодировка текущей кодовой страницы ANSI по умолчанию возвращается.

1
задан Peter Moore 22 March 2019 в 04:57
поделиться

1 ответ

Просто нужно сделать list из dict - dict (исправляя код с добавлением второй строки)

l=[v for v in {k:d for k,d in d.items() if k != 'rock'}.values()] # here is your own code 
newd=dict(kv for x in l for kv in x.items())
newd
Out[431]: 
{'gold1': {'data': ['g1']},
 'gold2': {'data': ['g2']},
 'gold3': {'data': ['g3']}}

с одной строкой

dict(v for d in d.values() for v in d.items()) # d is your dict
Out[436]: 
{'gold1': {'data': ['g1']},
 'gold2': {'data': ['g2']},
 'gold3': {'data': ['g3']}}
0
ответ дан Wen-Ben 22 March 2019 в 04:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: