如何使用Python中的正则表达式删除具有特殊字符串的字符?

时间:2016-11-10 01:38:10

标签: python regex

我正在尝试清理日志,我想删除一些特殊的字符串

示例:

%/h >  %/h Current value over threshold value
Pg/S >  Pg/S Current value over threshold value
Pg/S >  Pg/S  No. of pages paged in exceeds threshold
MB <  MB   min. avg. value over threshold value

我尝试过使用某些模式,但似乎没有用。

re.sub(r'\w\w\/\s>\s\w','',text)

有什么好主意让我删除特殊模式吗?

我想删除... / ...&gt; ... / ...

我希望我的输出只包含有用的单词。

   Current value over threshold value
   No. of pages paged in exceeds threshold
   min. avg. value over threshold value

感谢您的任何想法!

3 个答案:

答案 0 :(得分:3)

根据您尝试匹配的模式,您似乎总是知道字符串的位置。实际上,您可以在没有正则表达式的情况下执行此操作,只需使用df[each_column].reshape(1, -1)切片即可获得感兴趣的部分。最后,使用df[each_column]返回字符串,以获得最终结果。

以下结果将执行以下操作:

split - 在空间上分割,创建一个列表,其中每个单词将成为列表中的条目

join - 通过从第四个位置(0索引)

获取所有内容来对列表进行切片

s.split() - 将转换回字符串,在列表中的每个元素之间放置一个空格

演示:

[3:]

输出:

' '.join()

答案 1 :(得分:3)

假设文件的结构是:

  

[special-string] [&lt;或&gt;] [special-string] [message]

那么这应该有效:

{{1}}

答案 2 :(得分:1)

这是一个相对较长的正则表达式,但它完成了工作。

[%\w][\/\w]\/?[\/\s\w]\s?\<?\>?\s\s[\w%]\/?[a-zA-Z%]\/?[\w]?\s\s?\s?

演示:https://regex101.com/r/ayh19b/4

或者您可以执行以下操作:

^[\s\S]*?(?=\w\w(?:\w|\.))

演示:https://regex101.com/r/ayh19b/6