我正在尝试清理日志,我想删除一些特殊的字符串
示例:
%/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
感谢您的任何想法!
答案 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|\.))