【问题标题】:Python, strings, unicode charactersPython、字符串、Unicode 字符
【发布时间】:2011-11-12 03:45:47
【问题描述】:

comp/INFO_MAP_ECE/101102.1.119

这个字符串是 CPU 的输出,但是数字后面总是有特殊/不可打印的字符,我的目标是获得不包括它之前的文本和它之后的特殊/不可打印的数字。我正在尝试拆分方法,但不确定特殊/不可打印字符使用什么。任何人都可以提出一些建议吗?这将是一个很大的帮助。谢谢。

【问题讨论】:

  • 我建议您向我们展示用于提取文本的代码
  • 如果我的回答解决了你的问题,你应该点击复选标记接受它。
  • 如果您得到的答案之一解决了您的问题,请点击复选标记接受它。

标签: python regex string unicode character


【解决方案1】:

数字总是相同的长度吗?如果是这样,您可以对字符串进行切片。

'comp/INFO_MAP_ECE/101102.1.119'[18:30]

【讨论】:

  • 不是一个好主意。即使数字现在的长度相同,也可能并非总是如此。维护起来也变得相当繁琐。这正是正则表达式的用途。
【解决方案2】:

假设你的输出总是和你展示的一样,你可以使用regular expression

numPattern = r'/([\d.]+)'
output = 'comp/INFO_MAP_ECE/101102.1.119'

m = re.search(numPattern, output)

if m: #If a match was found
  numString = m.group(1)  #Extracts the first group surrounded by ()
  #etc

这里的模式查找 /,然后是一些数字和句点,然后是任何内容,并仅提取数字和句点。只要您始终获得与该描述匹配的字符串,这应该可以工作。

HTH!

【讨论】:

  • 据我所知. 不必在字符类中转义。所以,模式应该是[\d.]+',而不是[\d\.]+'
  • 另外,我不明白,.* 在模式末尾做了什么。
  • 已更改。我不知道字符类中的.s,所以很高兴知道。我也不完全确定.* 在那里做什么。也许我在考虑不可打印的字符?
猜你喜欢
  • 2017-11-19
  • 2012-04-21
  • 2021-11-03
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多