我一直试图在多行文本中提取SQL查询,但总是得到错误的输出。
如何在一个或三个引号之间获得文本?
注意:在第一个完整引号"
,"
,""""""
,''''''
之前和之后都可以有任何东西,我只对在引号之间找到第一个文本感兴趣。
import re
cell_text = """\
#%%sql
q = \"\"\"
select
name, breed, sum(weight) over (partition by breed order by name) as running_total_weight
from cats
order by breed, name
\"\"\"
f(q)
"""
print(cell_text)
我的尝试:
pat = """.*select(.*)['"].*"""
out = re.findall(pat,cell_text,flags=re.M)[0]
sql = 'select ' + out
print(sql)
# I am getting empty outputs for re.findall instead of text there.
所需输出:
input
----
#%%sql
q = """
select
name, breed, sum(weight) over (partition by breed order by name) as running_total_weight
from cats
order by breed, name
"""
f(q)
output
------
select
name, breed, sum(weight) over (partition by breed order by name) as running_total_weight
from cats
order by breed, name
input
-----
#%%sql
q = "select * from cats;"
f(q)
output
-------
select * from cats;
input
-----
q = 'select * from cats limit 2'
output
------
select * from cats limit 2
您需要使用DOTALL
或(? s)
模式,如下所示:
>>> print (re.findall(r'(?s)"""(.*?)"""', cell_text)[0])
select
name, breed, sum(weight) over (partition by breed order by name) as running_total_weight
from cats
order by breed, name
您还可以在re.findall
中使用标志
参数:
re.findall(r'"""(.*?)"""', cell_text, flags=re.DOTALL)
编辑:请注意,要匹配所有单引号或三引号文本,您可以交替使用此正则表达式:
r"""\"\"\"(.*?)\"\"\"|'''(.*?)'''|"(.*?)"|'(.*?)'"""
正则表达式演示
我有一个xml,我想提取其中的一部分。但我无法得到它。如果我使用变量并将每个键放入变量中,我可以得到那个部分,但这是一个非常漫长的过程。那幺,是否有任何简短的流程? 下面是 XML : 我想要< code>network link集合中的xml。
表名称: blist 任何可以将abcd_086、087等替换为xyz_086、087等的SQL查询。需要用xyz替换serial_no列的前4个字符。请帮助!!!
问题内容: 如何用另一部分替换字符串的特定部分? 输入字符串: 如何用其他方式更改字符串中的全部? 我认为我需要一个循环,但是我不确定如何使用它。 问题答案: 或者更精确地回答您的问题:
我想提取所有“like string”,即。 像“%”12548“%” 例如“%” 例如“%” 例如“%” 例如“%” 我在java当我获取组时,它不会返回正确的结果。请建议。
我正在寻找创建正则表达式的帮助,以便我可以用锚标签替换文本。文本来自SQL字段(VarChar(max)),格式如下: 在上面的文本中,我需要将1994年以后的所有章节替换为锚标签。例如,98、553、568和300都将被替换。下面的代码查找1994年的整个文本,例如c.98,但是我不确定如何替换该文本中的“98”。
我有一个熊猫数据框,有4行4列-这里是一个简单的版本: 我想做的是把它转换成一个2*8的数据帧,每个数组都有B、C和D——所以它看起来像这样: 在阅读熊猫文档时,我尝试了以下方法: 但是给了我一个错误,我无法识别源(以 DataError:没有要聚合的数字类型 ) 接下来,我想根据一个值分割数据帧,但我认为.groupby命令可能会处理它