有没能解释下为什么不相等,怎么样才能让他们比对成功呢?

susanml
susanml
订阅者
459
文章
0
粉丝
测试交流1 207字数 201阅读0分40秒阅读模式

事件起因:
excel 中的文档内容与 apk 中的配置文件 xml 文件进行比对,结果发现总是有一些会比对失败,但是去文件中看长的是一模一样,类型也是一样的
查看了下规律发现,只要是 excel 中内容中带空格或者逗号 (,)这样的就会比对失败。不清楚为什么会造成这样

  1. 尝试把 excel 的内容先复制到 txt 文本中(怀疑是格式导致)发现并不起效果
  2. 清除了 excel 字体的格式同样不行
  3. 把字符串的中间部分的空格进行删除,然后重新打个空格才能相等
    有没能解释下为什么不相等,怎么样才能让他们比对成功呢?插图
软件测试功能测试内容本文转自于TesterHome,如有侵权请联系(2523030730@qq.com)删除。文章源自玩技e族-https://www.playezu.com/215703.html文章源自玩技e族-https://www.playezu.com/215703.html
 
    • 薄荷可乐
      薄荷可乐 9

      神奇把字符串的中间部分的空格进行删除,然后重新打个空格才能相等
      猜测是空格和标点符号的问题,中文输入法的空格和逗号和英文输入法的空格和逗号编码不是一个。
      最好把你截图的 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)) 比较具有普遍性 好的,我代码里用正则去做处理了

    匿名

    发表评论

    匿名网友
    确定

    拖动滑块以完成验证