基本上,我有一个Hive脚本文件,我需要从中提取所有已创建表的名称。例如,从内容
...
create table Sales ...
...
create external table Persons ...
...
Sales
并Persons
应将其提取。为此,我的基本想法是:
create table
和create external table
,但是,输入可能不规范。例如,
create TABLE
因此,我正在考虑在应用基本算法之前先将输入规范化为规范形式。然后,我做了一些努力,提出了以下建议
' '.join(input.split()).lower()
作为Python的新手,我想知道这是解决问题的Pythonic方式,还是一开始就有缺陷?有没有一种简单的方法可以以流方式执行此操作,即避免立即将整个输入加载到内存中?
就像一些评论所说,正则表达式是一种获取所需内容的简洁明了的方法。如果您不介意获得小写结果,则此方法应该可以工作:
import re
my_str = """
...
create table Sales ...
create TabLE
test
create external table Persons ...
...
"""
pattern = r"table\s+(\w+)\b"
items = re.findall(pattern, my_str.lower())
print items
它捕获“ table”之后的下一个单词(随后至少一个空格/换行符)。
要获取表名称的原始大小写:
for x, item in enumerate(items):
i = my_str.lower().index(item)
items[x] = my_str[i:i+len(item)]
print items
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句