我的python2代码(psp):
input = form.getfirst('input')
row = cgi.escape(input)
f = open(filename, 'a')
f.write('"' + row + '",\n')
f.close()
生成这个:
"python - питон, прорицатель",
"cobra - кобра, очковая змея",
我尝试用 python3 读取这些数据。python3 的默认代码页是 UTF-8。
“蟒蛇 - питон, прорицатель”,
“眼镜蛇 - кобра, очковая змея”,
我需要计算俄罗斯符号的数量。但计算规范符号的数量:'&'、'#'、';' 和数字。
如何将 'xmlcharrefreplace' ascii 解码为 UTF-8,以将其与 python3(UTF-8) 代码中的硬编码俄罗斯符号进行比较:
#!/usr/bin/python3
import sys
print(sys.getdefaultencoding())
print(sys.stdout.encoding)
ru_abc = set(['а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'])
stat_data = { 'other': {}, \
'russian': {} }
for letter in open( filename ).read():
if letter in ru_abc:
if letter in stat_data['russian']:
stat_data['russian'][letter] += 1
else:
stat_data['russian'][letter] = 1
else:
if letter in stat_data['other']:
stat_data['other'][letter] += 1
else:
stat_data['other'][letter] = 1
print( stat_data )
我的标准输出看起来像:
utf-8
UTF-8
{'russian': {}, 'other': {'~': 3, '=': 169, '<': 300, '?': 473, '>': 312, ';': 318392, ':': 222, '%': 29, "'": 31, '&': 318409, '!': 36, ' ': 51427, '#': 318390, '"': 320, '-': 9822, ',': 21578, '/': 843, '.': 800, ')': 527, '(': 526, '+': 2, ']': 8, '_': 117, '[': 8, '|': 1, '\r': 224, '\n': 224, '\t': 38, '`': 3, '5': 31451, '4': 23216, '7': 131141, '6': 40036, '1': 352560, '0': 373246, '3': 25196, '2': 37785, '9': 81825, '8': 177608, 'u': 3354, 't': 7281, 'w': 1179, 'v': 1074, 'q': 214, 'p': 2966, 's': 5816, 'r': 6948, 'y': 1714, 'x': 318, 'z': 222, 'e': 10841, 'd': 2918, 'g': 1996, 'f': 1801, 'a': 7069, 'c': 4020, 'b': 1805, 'm': 2337, 'l': 4821, 'o': 5906, 'n': 6307, 'i': 8068, 'h': 2559, 'k': 902, 'j': 142}}