事件起因: excel 中的文档内容与 apk 中的配置文件 xml 文件进行比对,结果发现总是有一些会比对失败,但是去文件中看长的是一模一样,类型也是一样的 查看了下规律发现,只要是 excel 中内容中带空格或者逗号 (,)这样的就会比对失败。不清楚为什么会造成这样
其实很简单,你打印下下这两个字符串的字符 ascii 就可以看出不同了
a = "xxxx yyyyy" for c in a: print(ord(c))
如果想要相同可以用正则替换掉对应字符
神奇
把字符串的中间部分的空格进行删除,然后重新打个空格才能相等 猜测是空格和标点符号的问题,中文输入法的空格和逗号和英文输入法的空格和逗号编码不是一个。 最好把你截图的 2 个字符串源码贴出来,肉眼谁看得出来。。。
这个我之前遇到过,空格有可能是编码格式不一样。空格在 ASCII 里面的有 160 和 32 两个值,所以看起来都是空格,但是实际的 ASCII 值不一样。 我的做法是,把里面的空格都转码一下(如果是 160 就替换成 32,然后再来比对:
if ord(string_list[i])== 160: ord(string_list[i] = chr(32)
实例代码能否发下 看下他们的 id 空间是否为同一个
这种比对比的是内存地址,试试 assert 吧
文件打成了压缩包放百度云了,大家可以试下 链接:https://pan.baidu.com/s/15fbV5_u_PI92uY2T_OuTiw 提取码:tqvc
is 是内存地址比较,==是值相等就行
感谢解答
嗯,其实我建议用正则替换是有原因的,这类空格其实都满足正则里的\s: 所以用正则替换\s 为常用的空格 (chr(32)) 比较具有普遍性
好的,我代码里用正则去做处理了