Python 3正则表达式在特定点之前删除字符

时间:2016-11-24 10:44:28

标签: python regex python-3.x

我有多个单词存储在这样的列表中:

31547   4.7072% i
25109   3.7466% u
20275   3.0253% you
10992   1.6401% me
9490    1.4160% do
7681    1.1461% like
6293    0.9390% want
6225    0.9288% my
5459    0.8145% have
5141    0.7671% your

现在我需要清理它,以便在(i)考虑到这个词并不总是(i)之前删除所有内容,但之前所有内容的格式都是相似的。我已经看到了其他类似的问题但他们每次工作时都需要/ str这个词是相同的。

提前感谢所有的帮助和建议,我已经尝试过阅读并在Regex上做教程,但我发现它很复杂,无法理解。

对于类似的问题,我需要删除我使用的括号内的所有内容:

Cleanse = re.sub('<.*?>', '', line)

但是我不确定如何操纵它来删除单词之前的所有内容,因为我会强调这是我第一次使用正则表达式的实际时间。

1 个答案:

答案 0 :(得分:1)

要处理多行字符串,您可以使用

s = re.sub(r'^\d+[ \t]+\d+\.\d+%[ \t]*', '', s, flags=re.M)

如果您逐行处理,请使用

r = re.compile(r'^\d+\s+\d+\.\d+%\s*')
...
s = r.sub('', s)

请参阅regex demo

模式说明

  • ^ - 字符串的开头(或传递re.M标志的行)
  • \d+ - 一位或多位
  • \s+ - 一个或多个空格
  • \d+\.\d+ - 1位数,.,1 +位数
  • % - 文字%符号
  • \s* - 0+ whitespaces

请注意,在“多行”版本中,[ \t]最好只匹配水平 ASCII空格。它也可以使用更复杂的[^\S\r\n]模式来完成,默认情况下在Python 3.x中可以识别Unicode。