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