如何仅 select 目标字符串之后的下一个字符串但目标字符串之后的下一个字符串,而不考虑标点符号?
How to only select the very next string after target string but the next string after the target string, regardless of punctation?
我有一个看起来像这样的 df:
id query
1 select * from table1 where col1 = 1
2 select a.columns FROM table2 a
我只想将 select 字符串(table 如果你知道 sql)放在字符串 FROM
之后的新列中。 FROM
可以用不同的大小写拼写(即From, from,FROM,etc
)。
如何 select From
之后的字符串而不是 FROM
字符串
之后的下一个字符串
我试过了:
df['tableName'] = df['query'].str.extract('[^from]*$')
但这不起作用。我不确定是否应该立即将整个 df 小写。
新的 df 应该是这样的:
id query tableName
1 select * from table1 where col1 = 1 table1
2 select a.columns FROM table2 a table2
提前致谢。
你可以试试
df['tableName'] = df['query'].str.extract('(?i)from ([^ ]*)')
(?i)
表示忽略大小写。
print(df)
id query tableName
0 1 select * from table1 where col1 = 1 table1
1 2 select a.columns FROM table2 a table2
这将在没有正则表达式的情况下为您提供答案,并且应该考虑“table”
的所有大写类型
df['Table_Name'] = df['query'].apply(lambda x : x.lower().split('from')[1]).apply(lambda x : x.split()[0])
我有一个看起来像这样的 df:
id query
1 select * from table1 where col1 = 1
2 select a.columns FROM table2 a
我只想将 select 字符串(table 如果你知道 sql)放在字符串 FROM
之后的新列中。 FROM
可以用不同的大小写拼写(即From, from,FROM,etc
)。
如何 select From
之后的字符串而不是 FROM
字符串
我试过了:
df['tableName'] = df['query'].str.extract('[^from]*$')
但这不起作用。我不确定是否应该立即将整个 df 小写。
新的 df 应该是这样的:
id query tableName
1 select * from table1 where col1 = 1 table1
2 select a.columns FROM table2 a table2
提前致谢。
你可以试试
df['tableName'] = df['query'].str.extract('(?i)from ([^ ]*)')
(?i)
表示忽略大小写。
print(df)
id query tableName
0 1 select * from table1 where col1 = 1 table1
1 2 select a.columns FROM table2 a table2
这将在没有正则表达式的情况下为您提供答案,并且应该考虑“table”
的所有大写类型df['Table_Name'] = df['query'].apply(lambda x : x.lower().split('from')[1]).apply(lambda x : x.split()[0])