小编CRP*_*CRP的帖子

在Python中,如何通过键列连接两个数组?

假设我有两个数组(在导入numpy之后为np),

a=np.array([['a',1],['b',2]],dtype=object)
Run Code Online (Sandbox Code Playgroud)

b=np.array([['b',3],['c',4]],dtype=object)
Run Code Online (Sandbox Code Playgroud)

如何得到:

c=np.array([['a',1,None],['b',2,3],['c',None,4]],dtype=object)
Run Code Online (Sandbox Code Playgroud)

基本上,使用第一列作为键的连接.

谢谢

python arrays numpy

5
推荐指数
1
解决办法
2901
查看次数

Python,如何解析key = value list忽略括号内的内容?

假设我有一个这样的字符串:

"key1=value1;key2=value2;key3=(key3.1=value3.1;key3.2=value3.2)"
Run Code Online (Sandbox Code Playgroud)

我想得到一个与上面相对应的字典,其中值为key3字符串

"(key3.1=value3.1;key3.2=value3.2)"
Run Code Online (Sandbox Code Playgroud)

并最终得到相应的子词典.

我知道如何用分号分割字符串,但是如何告诉解析器忽略括号之间的分号?
这包括潜在的嵌套括号.

目前我正在使用一个特殊的例程,寻找成对的匹配括号,"清除"其内容,获取拆分位置并将它们应用于原始字符串,但这看起来并不优雅,必须有一些预先打包的pythonic方式做这个.

如果有人有兴趣,这是我目前使用的代码:

def pparams(parameters, sep=';', defs='=', brc='()'):
    '''
    unpackages parameter string to struct
    for example, pippo(a=21;b=35;c=pluto(h=zzz;y=mmm);d=2d3f) becomes:
     a: '21'
     b: '35'
     c.fn: 'pluto'
     c.h='zzz'
     d: '2d3f'
     fn_: 'pippo'
    '''

    ob=strfind(parameters,brc[0])
    dp=strfind(parameters,defs)
    out={}

    if len(ob)>0:
        if ob[0]<dp[0]:
            #opening function
            out['fn_']=parameters[:ob[0]]
            parameters=parameters[(ob[0]+1):-1]
    if len(dp)>0:
        temp=smart_tokenize(parameters,sep,brc);
        for v in temp:
            defp=strfind(v,defs)
            pname=v[:defp[0]]
            pval=v[1+defp[0]:]
            if len(strfind(pval,brc[0]))>0:
                out[pname]=pparams(pval,sep,defs,brc);
            else:
                out[pname]=pval
    else:
        out['fn_']=parameters
    return out

def smart_tokenize( instr, sep=';', brc='()' ):
    '''
    tokenize string ignoring separators contained …
Run Code Online (Sandbox Code Playgroud)

python parsing

3
推荐指数
1
解决办法
1394
查看次数

标签 统计

python ×2

arrays ×1

numpy ×1

parsing ×1