问题描述
我想使用字符串值过滤数组(仅显示包含此字符串或其一部分的行)。
例如,我有那个对象:
0: {CurrentDriverElement: null,FullName: "1043 TU 147",FullName2: null,FuelTheoreticalCosumptionAvg: 0,FuelTypeEnum: 2,…}
1: {CurrentDriverElement: null,FullName: "5076 TU 162",FullName2: "",…}
2: {CurrentDriverElement: null,FullName: "test ET7 mycom ",FuelTypeEnum: -1,…}
3: {CurrentDriverElement: null,FullName: "test analog",…}
4: {CurrentDriverElement: null,FullName: "5217 TU 185",…}
Rq:这只是一个例子。
为此,我现在将“ test”作为字符串,结果应为:
2: {CurrentDriverElement: null,…}
因为“测试ET7”和“测试模拟”具有字符串“ test”。
0: {CurrentDriverElement: null,…}
2: {CurrentDriverElement: "test LA ",…}
3: {CurrentDriverElement: null,…}
4: {CurrentDriverElement: null,…}
在这里您找到U:
0: {CurrentDriverElement: null,…}
1: {CurrentDriverElement: null,…}
2: {CurrentDriverElement: "test LA ",…}
解决方法
您可以使用getLogger
import org.apache.logging.log4j.*;
public class LogManager {
private static final Logger logger = Logger.getLogger(LogManager.class);
,
array.filter(item => item.FullName.includes('test'));
,作为includes()方法的替代方法,您可以使用indexOf()方法:
---------------------------------------------------------------------------
OptionError Traceback (most recent call last)
~/admvenv/lib/python3.7/site-packages/pandas/io/excel/_base.py in __new__(cls,path,engine,**kwargs)
630 try:
--> 631 engine = config.get_option(f"io.excel.{ext}.writer")
632 if engine == "auto":
~/admvenv/lib/python3.7/site-packages/pandas/_config/config.py in __call__(self,*args,**kwds)
230 def __call__(self,**kwds):
--> 231 return self.__func__(*args,**kwds)
232
~/admvenv/lib/python3.7/site-packages/pandas/_config/config.py in _get_option(pat,silent)
101 def _get_option(pat,silent=False):
--> 102 key = _get_single_key(pat,silent)
103
~/admvenv/lib/python3.7/site-packages/pandas/_config/config.py in _get_single_key(pat,silent)
87 _warn_if_deprecated(pat)
---> 88 raise OptionError(f"No such keys(s): {repr(pat)}")
89 if len(keys) > 1:
OptionError: "No such keys(s): 'io.excel..writer'"
During handling of the above exception,another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-16-80bc8a5d0d2f> in <module>
----> 1 save_xls([df1,df2],os.getcwd())
<ipython-input-15-0d1448e7aea8> in save_xls(list_dfs,xls_path)
1 def save_xls(list_dfs,xls_path):
----> 2 with ExcelWriter(xls_path) as writer:
3 for n,df in enumerate(list_dfs):
4 df.to_excel(writer,'sheet%s' % n)
5 writer.save()
~/admvenv/lib/python3.7/site-packages/pandas/io/excel/_base.py in __new__(cls,**kwargs)
633 engine = _get_default_writer(ext)
634 except KeyError:
--> 635 raise ValueError(f"No engine for filetype: '{ext}'")
636 cls = get_writer(engine)
637
ValueError: No engine for filetype: ''
一个例子:
let result = arr.filter(f=> f.FullName.indexOf('test'))
,
要测试所有字段,可以使用Object.values来返回所有值
[{CurrentDriverElement: null,FullName: "1043 TU 147",FullName2: null,FuelTheoreticalCosumptionAvg: 0,FuelTypeEnum: 2},{CurrentDriverElement: null,FullName: "5076 TU 162",FullName2: "",FullName: "test ET7 mycom ",FuelTypeEnum: -1},FullName: "test analog",FullName: "5217 TU 185",FuelTypeEnum: 2}].filter(e => {
return Object.values(e).some(value => /test/.test(value))
})
我认为Regexp是比以下更干净的解决方案:
[].filter(e => {
return Object.values(e).some(value => value && typeof value.includes === 'function' && value.includes('test'))
})
值为空,未定义或数字-因此,您必须测试值是否存在以及如果可以在该值上调用includes
方法