带有正则表达式过滤意外字符的 Python str.strip()

标签 python regex

我遇到了一个我希望很简单的问题,但是我在试图解决这个问题时遇到了障碍。我试图从文件中每一行的开头去除 DateTime 时间戳,但是返回的信息切断了一些我想保留的字符。我相当确定我的正则表达式没问题,并且基于 regex.group() 输出,它看起来不错。我发现带有字母“c”和“e”的行的字符似乎被剪掉了,而其他行则按预期工作。

Python 2.7.6(默认,2015 年 6 月 22 日,17:58:13)

Linux2 上的[GCC 4.8.2]

>>> import re
>>>
>>> line2 = '[Wed Dec 01 10:24:24 2010] ceeeeest'
>>> a = re.match(r'(\[[A-Za-z]{3}\s)?([A-Za-z]{3})(\s+)([0-9]{1,4})(\s+)([0-9]{2})(:)([0-9]{2})(:)([0-9]{2})(\s[0-9]{1,4})?(\])?', line2, re.I)
>>> a.group()
'[Wed Dec 01 10:24:24 2010]'
>>> a.groups()
('[Wed ', 'Dec', ' ', '01', ' ', '10', ':', '24', ':', '24', ' 2010', ']')
>>> b = a.group()
>>> b
'[Wed Dec 01 10:24:24 2010]'
>>> c = line2.strip(b)
>>> c
'st'
>>>

我希望 C 是“ceeeeest”

>>> line = '[Wed Dec 01 10:24:24 2010] testc'
>>> a = re.match(r'(\[[A-Za-z]{3}\s)?([A-Za-z]{3})(\s+)([0-9]{1,4})(\s+)([0-9]{2})(:)([0-9]{2})(:)([0-9]{2})(\s[0-9]{1,4})?(\])?', line, re.I)
>>> a.group()
'[Wed Dec 01 10:24:24 2010]'
>>> a.groups()
('[Wed ', 'Dec', ' ', '01', ' ', '10', ':', '24', ':', '24', ' 2010', ']')
>>> b = a.group()
>>> c = line.strip(b)
>>> c
'test'
>>>

我希望 c 是“testc”

我在这里缺少一些非常基本的东西吗?请赐教。谢谢。

最佳答案

方法str.strip将删除参数中字符串开头和结尾的所有字符。您可能想使用 str.replace相反。

>>> line = '[Wed Dec 01 10:24:24 2010] testc'
>>> line.replace('[Wed Dec 01 10:24:24 2010]', '')
' testc'

您可以使用 str.lstrip 去除前导空格, 或者使用 str.strip 如果你也想去掉尾随的空格(默认参数是空格)。

关于带有正则表达式过滤意外字符的 Python str.strip(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508758/

相关文章:

python - 在 vtk python 中更新实时点云数据

c# - 正则表达式帮助 - 点 (.) 后最多需要 3 个数字

jinja2 过滤器中的正则表达式匹配(用于 saltstack)

javascript - 确定字符串中的组

python - 使用 Python 将列添加到现有的 CSV 文件

python - Pandas 对 groupby 对象内的连续日期观察进行计数

python - 获取相关模型值的字典

java - 使用正则表达式提取匹配的字符串

javascript - 检查字符串是否仅包含表情符号 - Javascript

python - 这是删除 dict 内对象的正确方法吗