我在pytable中创建了一个表。
我需要pytables中的等效条件从table_name中选择*,其中col_name就像'%new%' select * from table_name其中col_name类似'new%'
如果列是整数数据类型,还有如何做到这一点?
我能够做到这一点 rows = tb1.read_where(“col_name == 16”) 但是不能使用“喜欢”
答案 0 :(得分:0)
您无法在PyTables / numexpr查询中直接执行此操作。字符串比较基本上仅限于类似数字的操作(==
,!=
,<
,>
等。你需要在python中进行LIKE评估,可能还有正则表达式。这就是我要做的事情:
import re
import tables as tb
new_re = re.compile('new')
with tb.open_file(...) as f:
tb1 = f.root.tb1
rows = [row[:] for row in tb1 if new_re.search(row['col_name']) is not None]
这样做的好处是只能读取一次数据。请注意,如果您只关心以new(new%
)开头的列,则由于ASCII排序,您可以使用以下内容。
rows = tb1.read_where('col_name >= "new" & col_name < "nex"')