【问题标题】:How can I identify invisible characters in python strings?如何识别 python 字符串中的不可见字符?
【发布时间】:2015-07-10 12:55:27
【问题描述】:

短版

我正在检索一个数据库值,其中包含一个简短但完整的 HTML 结构。我想去掉所有的 HTML 标记,只得到一个值。围绕我的相关信息的 HTML 总是相同的,我只需要弄清楚字符串包含哪些类型的换行符、制表符或空格,这样我就可以进行匹配并将其删除。

有没有可以在线粘贴字符串的地方,或者我可以通过其他方式检查字符串的实际内容,以便将其删除?

长版,以及我已经尝试过的:

从 HP Quality Center 数据库中检索字符串,并在自动测试执行的控制台中打印,该字符串被解释为显示为两个空格。粘贴到word、eclipse或QC脚本编辑器时,显示为换行符。

我尝试将空格替换为\n、双空格和¶。没有任何效果。

我正在从一个工作的 VBScript 翻译这个脚本。有问题的不可见字符在此处定义为vbcrlfVBCRLF。出于某种原因,他们在相关参数值之前的替换字符串中使用小写字母,而在我的相关子字符串之后的字符串中使用大写字母。它们被定义为变量,并且不在字符串本身中:<html>"&vbcrlf&"<body>"&vbcrlf&"<div...

这个网站建议我应该使用\n https://answers.yahoo.com/question/index?qid=20070506205148AAmr92N,因为他们写道:

vbCrLf = "\n" # 回车换行组合

我对这里使用的大写/小写不一致感到有些困惑......

编辑:

在谷歌搜索后回车组合,我了解到它可以定义为/r/n这里:Order of carriage return and new line feed

但是我花了很长时间才找到它,但它并没有回答我的问题,即我如何更好地准确识别字符串包含哪些类型的不可见字符。我会留下这个问题。

【问题讨论】:

  • 不用担心大小写; VB 不区分大小写。 (至少在经典上。我不确定 VB.Net,但这与这里无关。)
  • 太棒了。发生了意外的奖金学习;)
  • 你可以通过简单地调用repr并打印结果来发现你的字符串的内容。
  • 我不知道你所说的隐形字符是什么意思?你总是可以写print( [data] ),这会让你知道字符串包含什么(它会告诉你\r(回车),\n(新行)和隐藏的unicode/hex值,比如\x00 )。
  • 因为我在 HP Quality Center 中检索数据,并且由于我仍然不知道我的控制台输出在这个系统中的位置,所以我正在使用另一个打印功能,它将字符串打印到另一个日志。因此,在这种情况下,repr 对我不起作用,但使用括号语法可以。这真的很容易,我只是不知道如何找到信息。如果你们能写一个答案,我很乐意接受。这正是我一直在寻找的。我的输出字符串,当 QCprint([string]) = <html>\r\n<body>\r\n<div... 等时

标签: python string


【解决方案1】:

要查看字符串的内容(包括它的“隐藏”值),您可以随时这样做:

print( [data] )
# or
print( repr(data) )

如果您在 cmets 中描述的系统中,您也可以这样做:

with open('/var/log/debug.log', 'w') as fh:
    fh.write( str( [data] ) )

不过,这只会让您大致了解您的数据是什么样的,但如果这能解决您的疑问或问题,那就太好了。如果您需要进一步的帮助,请编辑您的问题或提交一个新问题:)

【讨论】:

  • 这正是我想要的。留给瑞典人解决挪威人的问题;)。 Tack så mycket。
  • @KjetilNordin 哈哈,没问题,奶奶。很高兴为您服务;)
  • 请注意,此答案不回答标题中的问题。我建议编辑问题标题以反映使用此答案解决的问题。
  • +我现在标题匹配答案。干得好!
  • 你会如何使用 jupyter notebook 中的 pandas 列来做到这一点?
猜你喜欢
  • 2020-03-30
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 2018-03-14
  • 2020-12-18
相关资源
最近更新 更多