【问题标题】:Python Regular Expressions - Removing Specific PatternsPython 正则表达式 - 删除特定模式
【发布时间】:2017-11-01 14:18:39
【问题描述】:

我正在尝试使用正则表达式来删除与我的数据集中的流派名称相关的特定键码。但是,到目前为止,我已经摆脱了大多数键码,但留下了一些字母,我不知道为什么。经检查,在 0 后面有字母的地方似乎大多有问题,例如“/m/0lxr”留下了 lxr。

如果有人知道我将如何解决这个问题,请告诉我!

这是我到目前为止的代码。

def prepare(self, word): 
    word = re.sub(r'//', "", word)
    word = re.sub(r'/\u[0-9][a-z]', "", word)

    word = re.sub(r'/.', "", word) 
    word = re.sub(r'/,', "", word) 
    word = re.sub(r'/!', "", word) 
    word = re.sub(r'/?', "", word) 
    word = re.sub(r'/{', "", word)

    word = re.sub(r"'", "", word)
    word = re.sub(r"//m//[0-9][a-z]+", "", word) 
    word = re.sub(r'[0-9][a-z]+', "", word)
    word = re.sub(r'[a-z][0-9]+', "", word)

    return word

【问题讨论】:

  • 你的输入和期望的输出是什么?
  • 好的,对于我的输入,它会接受例如“{”/m/0lsxr":"Crime Fiction"}" 并且希望输出是“Crime Fiction”,但是目前输出显示“lsxr Crime Fiction”。只是在寻找一种方法来删除那个 lsxr 位。
  • 为什么不使用(?<=:")[^"]*(?=")
  • @ctwheels 感谢您的回复。我可以问清楚我将如何在我的代码中实现它吗?它会类似于 word = re.sub((?
  • 类似re.sub(r'(?<=:")[^"]*(?=")', "", word)

标签: python regex alphanumeric


【解决方案1】:

你可以使用ast.literal_eval:

import ast
s = '{"/m/0lsxr":"Crime Fiction"}'
final_output = ast.literal_eval(s).values()
print(final_output)

输出:

['Crime Fiction']

【讨论】:

    【解决方案2】:

    试试这个

    word="/m/0lsxr:Crime Fiction"
    re.sub(r'.*:(\w*)',r'\1',word)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多