我有三个文本文件。 一个(zoo.txt)看起来像这样:
{'cow':'113', 'cat':'50', 'dog':'100', 'IDnumber':'113.1.22', 'type':'3'}
它由json函数读取:
file_open = open('zoo.txt', 'r')
zoo_animal = file_open.read()
zoo_animal = json.loads(zoo_animal)
在函数之后,输出如下:
{u'cow':u'113', u'cat':u'50', u'dog':u'100', u'IDnumber':u'113.1.22', u'type':u'3'}
另一个是in_range.txt,这意味着zoo.txt中key的值必须在此标准范围内匹配。 in_range.txt看起来像:
cow 1 150
cat 0 25
dog 0 50
它用函数读取:
with open('in_range.txt', 'r') as g:
for line in g:
spliteLineR=line.split()
in_range[str(spliteLineR[0])]=[int(spliteLineR[1]),int(spliteLineR[2])]
输出结果为:
{'cow':[1,150], 'cat':[0,25], 'dog':[0,50]}
第三个文本文件是single_value.txt,这意味着zoo.txt中key的值必须等于标准值。
single_value.txt如下所示:
IDnumber 1.8.70
type 1
它还可以通过函数读取:
with open('single_value.txt', 'r') as f:
for line in f:
spliteLineS=line.split()
single_value[str(spliteLineS[0])]=str(spliteLineS[1])
输出结果为:
{'IDnumber':'1.8.70', 'type':'1'}
我的问题是:
请帮我一把〜非常感谢〜
答案 0 :(得分:0)
不,您不需要将ASCII字符串转换为Unicode,反之亦然,因为ASCII是Unicode的一个子集,所以当您进行相等测试时它们会表现得很明智,例如
print('cow' == u'cow')
<强>输出强>
True
该代码可以在Python 2或Python 3中正常运行。
但是, do 必须将这些数字字符串转换为数字类型才能执行数字比较。这是一个简短的演示。
from __future__ import print_function
zoo_animal = {
u'cow':u'113', u'cat':u'50', u'dog':u'100',
u'IDnumber':u'113.1.22', u'type':u'3',
}
in_range = {'cow':[1, 150], 'cat':[0, 25], 'dog':[0, 50]}
for key in zoo_animal:
if key in in_range:
lo, hi = in_range[key]
val = int(zoo_animal[key])
print(key, val, lo <= val <= hi)
<强>输出强>
cow 113 True
cat 50 False
dog 100 False
再一次,该代码适用于Python 2和Python 3。