社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

kcorlidy

kcorlidy 最近创建的主题
kcorlidy 最近回复了
6 年前
回复了 kcorlidy 创建的主题 » 在python中将字符串转换为dict

如果继续使用相同的字符串格式,则可以使用复杂的正则表达式来覆盖各种模式。

下面是一些模式的正则表达式。如果这能解决你的问题,请告诉我。如果没有,请提供我的解决方案失败的详细信息:

编辑解释

  1. 第一组 (?=F\d+=\[).*?(\]){2,}(?=|,)
    • (?=F\d+=\[) 匹配字符串以f开头,有一个或多个数字,并且 =[ 在他们之后
    • .*?(\]){2,} 尽可能少地匹配字符串,它有2个或更多 ] 最后
    • (?=|,) 弦的末端 , 或者什么都没有
  2. 第二组 F\d.[^,]+
    • 匹配第一组后,很容易找到类似 F6=Value6 . 因为第一组优先于第二组,所以第二组只能匹配其余的字符串。

代码

string = "F1=Value1,F2=Value2,F3=[[F4=Value4,F5=Value5]],F6=Value6,F7=[[[BC],[AC]]]"
import re
resultset = [ele[0] if ele[0] else ele[-1] for ele in re.findall(r"((?=F\d+=\[).*?(\]){2,}(?=|,))|(F\d.[^,]+)",string)]
print({x[:x.find("=")]:x[x.find("=")+1:] for x in resultset})

产量

{'F6': 'Value6', 'F2': 'Value2', 'F3': '[[F4=Value4,F5=Value5]]', 'F1': 'Value1', 'F7': '[[[BC],[AC]]]'}

编辑:因为前一个regex在string为 F1=Value1,F2=Value2,F8=[iD=10,ig=12S],F3=[[F4=Value4,F5=Value5]],F6=Value6,F9=[iD=10,ig=12S],F7=[[[BC],[AC]]]

我把regex改成 ((?=F\d+=\[).*?(\])+(?= |,F))|(F\d.[^,]+) . 我们需要一个技巧。 在字符串后添加一个空格

string = "F1=Value1,F2=Value2,F8=[iD=10,ig=12S],F3=[[F4=Value4,F5=Value5]],F6=Value6,F9=[iD=10,ig=12S],F7=[[[BC],[AC]]]"
import re
resultset = [ele[0] if ele[0] else ele[-1] for ele in re.findall(r"((?=F\d+=\[).*?(\])+(?= |,F))|(F\d.[^,]+)",string+" ")]
print({x[:x.find("=")]:x[x.find("=")+1:] for x in resultset})
6 年前
回复了 kcorlidy 创建的主题 » 使用flask sqlalchemy查询数据库中现有的mysql表

在sqlalchemy中,如果要查询表,应该使用session查询表 Table() . 因为 'Table' object has no attribute 'query' . 如果表已经存在,则不需要创建它,只需使用它。 sqlalchemy existing database query

from sqlalchemy import Table, Column, String, create_engine, MetaData
from sqlalchemy.orm import sessionmaker

engine = create_engine()

metadata = MetaData()
test_ = Table('test', metadata,
    Column('msg', String, primary_key=True),
    Column('msg_', String)
)
Session = sessionmaker(bind=engine)
session = Session()
print(session.query(test_).filter_by(msg_ = "test").with_entities("msg","msg_").one())
# ('t', 'test')

在烧瓶炼金术中,它几乎和炼金术一样。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = ""
db = SQLAlchemy(app)


class test(db.Model):
    msg = db.Column(db.String, primary_key=True)
    msg_ = db.Column(db.String)

    def __init__(self, msg, msg_):
        self.msg = msg
        self.msg_ = msg_

    def __repr__(self):
        return "msg: {} msg_: {}".format(self.msg,self.msg_)

result = test.query.filter_by(msg_="test").one()
print(result)
print(result.msg,result.msg_)
'''
msg: t msg_: test
t test
'''
6 年前
回复了 kcorlidy 创建的主题 » 在字符串python中提取特定关键字后的列表

我考虑是否可以提取包含空格或其他内容的值(除了 \n , : )

  1. [kK]\d+.(.*?)(?=.[kK]\d+|$)
    • [kK]\d+. 字符串以开头 k1: K1: k23:
    • (.*?) 所有比赛
    • (?=.[kK]\d+|$) 字符串以整个字符串结尾或 K1 k1
  2. [^,]+ 拆分字符串

全码

import re

my_string = "K1:s1,\ns: face2,\ns3,\n\nK2:g1,\ng2,\ng3,\nK3:m1,\nm2,\nm3"
my_string = my_string.replace("\n","") # remove \n

string_list = re.findall(r"[kK]\d+.(.*?)(?=.[kK]\d+|$)",my_string,re.DOTALL)
group = [ re.findall(r"[^,]+",ele) for ele in string_list]
print(group)

# [['s1', 's: face2', 's3'], ['g1', 'g2', 'g3'], ['m1', 'm2', 'm3']]
6 年前
回复了 kcorlidy 创建的主题 » 用python中的特定值索引拼接字符串列表

您可以尝试使用regex。

import re

string = """ 
Transaction Summary
Joe buys from Mindy 5 apples for 6$
Mark buys from Alex 3 apples for 5$
END
"""
print(re.findall(r"(\w+) buys from (\w+) (\d+) apples for (\d+)",string))
# [('Joe', 'Mindy', '5', '6'), ('Mark', 'Alex', '3', '5')]
7 年前
回复了 kcorlidy 创建的主题 » python函数不返回任何内容

有东西回来了,你必须 print() 它。

print(pythagorean_pair())

你好像在问 为什么函数只打印 Ture/False 。因为您在打印前返回,所以返回时功能完成。所以 打印() 不会执行。

更改为:

if ans == 0:
    print ("True, they are pythagorean pair!")
    return (True)
else:       
    print ("False, they are not pythagorean pair!")
    return (False)
7 年前
回复了 kcorlidy 创建的主题 » 跳过python中的索引

我试着理解你说的话,我写了这段代码

li = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
def k(pos = 0):
    for i in li[pos:]:
        print(i)
        if li.index(i) == 3: #along with other condition
            return k(pos = 9)
k()