我的代码是
proc=subprocess.Popen(command,stdout=subprocess.PIPE)
print(proc.stdout.readline())
以下面的格式获得结果。
但是我想要计算并获得只有Datatype
CLOB
和BLOB
的列名,并将它们存储在变量中以便在进一步的过程中使用。
Datattype
和BLOB
Clob
的数量是动态的。
例如: -
-----------------------------------------------
| COLUMN_NAME | DATA_TYPE |
-----------------------------------------------
| C460 | VARCHAR2 |
| C459 | CLOB |
| C458 | VARCHAR2 |
| C457 | VARCHAR2 |
| C456 | CLOB |
| C8 | BLOB |
| C60901 | VARCHAR2 |
-----------------------------------------------
在这种情况下,我应该得到3变量C459,C456,C8
答案 0 :(得分:1)
在你的情况下,我会去正则表达式
re.findall('(?m)C(\d+)(?=.+[CB]LOB)', proc.stdout.read())
其中
此单行将为您提供您感兴趣的所有列的列表。
修改强>
这是一个细分 - 我用常量字符串
替换了输出In [84]: import re
In [85]: COL_RE = re.compile('(?m)(C\d+)(?=.+[CB]LOB)')
In [86]: output = '''-----------------------------------------------
...: | COLUMN_NAME | DATA_TYPE |
...: -----------------------------------------------
...: | C460 | VARCHAR2 |
...: | C459 | CLOB |
...: | C458 | VARCHAR2 |
...: | C457 | VARCHAR2 |
...: | C456 | CLOB |
...: | C8 | BLOB |
...: | C60901 | VARCHAR2 |
...: -----------------------------------------------'''
In [87]: columns = COL_RE.findall(output)
In [88]: columns
Out[88]: ['C459', 'C456', 'C8']
下次,你应该做好准备