在Python中使用Regex删除nam末尾带有“expn”的MongoDB数据库

2024-09-26 21:47:18 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑到StackOverFlow上regex的问题太多,我很抱歉再添加一个问题,但我似乎无法找出脚本中的错误。它应该遍历数据库中的所有集合,并根据它们是否在末尾包含字符串“\u Clean”来执行条件操作

我很确定我用错了正则表达式

from pymongo import MongoClient
from bson.son import SON
import re

db = MongoClient().guns
pattern = re.compile("(?!)(_Clean)\Z")

for collection in db.collection_names():
    if pattern.match(str(collection)):
        print(str(collection))
        print("No, I should be dropped")
    else:
        print("Yay, I am clean")
        print(str(collection))

我收到的输出是:

Yay, I am clean
Accidental_Injuries_Clean
Yay, I am clean
Massshootings_Clean
Yay, I am clean
Accidental_Injuries_Teens_Clean
Yay, I am clean
Officer_Involved_Shootings_Clean
Yay, I am clean
Accidental_Deaths_Children
Yay, I am clean
Accidental_Injuries_Children_Clean
Yay, I am clean

非常感谢你们抽出时间,我很感激你们的建议


Tags: fromimportrecleandbamcollectionpattern
1条回答
网友
1楼 · 发布于 2024-09-26 21:47:18

我不认为你真的需要正则表达式。您可以使用基本的字符串切片:

dbs = ['Accidental_Injuries_Clean',
'Massshootings_Clean',
'Accidental_Injuries_Teens_Clean',
'Officer_Involved_Shootings_Clean',
'Accidental_Deaths_Children',
'Accidental_Injuries_Children_Clean']

for db in dbs:
  if db[-6:] == '_Clean':
    print('Delete: ', db)

输出:

Delete:  Accidental_Injuries_Clean
Delete:  Massshootings_Clean
Delete:  Accidental_Injuries_Teens_Clean
Delete:  Officer_Involved_Shootings_Clean
Delete:  Accidental_Injuries_Children_Clean

请注意,您当前的正则表达式不起作用,因为您正在对要查找的字符串使用负向前看。这是一个有效的方法:

^{}

相关问题 更多 >

    热门问题