python - 在 Python 中拆分字符串,多次出现 split 关键字
问题描述
所以,我想为 MongoDB 拆分过滤器和更新参数替换 Pymongo 库中可用的一种方法。
{filter}, {update}
从文件传递给我,每行一对
例如:{"k1":"v1"}, {"k1":"v1", "k2":"v2", "k3":"v3"}
我想做什么?
拆分它们,以便我得到两个 dict 变量,
filter = {"k1":"v1"}
update = {"k1":"v1", "k2":"v2", "k3":"v3"}
我试过什么?
问题是,我不想更改原始格式,如果我使用“,”拆分它们,那么它可能会突然拆分,我也不能依赖于第一次出现“,”的拆分,因为过滤器部分本身可能有多个“ "
def data_replace_one(host, port, dbname, coll_name, file_path, authdb):
if LOCALHOST:
client = pymongo.MongoClient(host, port)
else:
print("Enter credentials:")
uname = input("Username: ")
pwd = getpass.getpass()
client = pymongo.MongoClient(
host, port, username=uname, password=pwd, authSource=authdb)
db = client[dbname]
coll = db[coll_name]
with open(file_path) as in_file:
list_dict_queries = [line.strip() for line in in_file]
list_dict_queries = list(filter(None, list_dict_queries))
for query in list_dict_queries:
query_list = query.split("|")
query_list[0] = query_list[0].strip()
query_list[1] = query_list[1].strip()
#print(literal_eval(query_list[0]), literal_eval(query_list[1]))
coll.replace_one(literal_eval(
query_list[0]), literal_eval(query_list[1]))
解决方案
如果您在其他任何地方都没有大括号/大括号,那么您可以使用以下内容。
>>> filter, update = re.findall('{.*?}', '{"k1":"v1"}, {"k1":"v1", "k2":"v2", "k3":"v3"}')
>>> filter
'{"k1":"v1"}'
>>> update
'{"k1":"v1", "k2":"v2", "k3":"v3"}'
推荐阅读
- fedora - 为什么 fedora 无法加载模块检测?
- php - HTML表单使用PHP发布到电子邮件地址
- arrays - 如果语句似乎不存在
- python - 如何绘制散点图,该散点图也表示 x 的每个值的 y 值的直方图
- java - java - 将随机对象添加到随机数组
- java - 如何修复 Aide(移动 IDE)中的打包错误?
- python - Color-Information 对 CNN 的作用/效果
- typo3 - 向typo3中的内容元素添加另一张图片
- java - 如何在android java中使用PixelCopy API从View中获取位图
- if-statement - 谷歌表格的vlookup中的嵌套IF函数