python模式在列表中剪切字符串

python模式在列表中剪切字符串,python,string,parsing,pattern-matching,cut,Python,String,Parsing,Pattern Matching,Cut,我有一个字典变量“d”,其中包含键、整数和值作为字符串列表 368501900 ['GH131.hmm ', 'CBM1.hmm '] 368499531 ['AA8.hmm '] 368500556 ['AA7.hmm '] 368500559 ['GT2.hmm '] 368507728 ['GH16.hmm '] 368496466 ['AA2.hmm '] 368504803 ['GT21.hmm '] 368503093 ['GT1.hmm ', 'GT4.hmm

我有一个字典变量“d”,其中包含键、整数和值作为字符串列表

368501900 ['GH131.hmm  ', 'CBM1.hmm  ']
368499531 ['AA8.hmm  ']
368500556 ['AA7.hmm  ']
368500559 ['GT2.hmm  ']
368507728 ['GH16.hmm  ']
368496466 ['AA2.hmm  ']
368504803 ['GT21.hmm  ']
368503093 ['GT1.hmm  ', 'GT4.hmm  ']
代码如下所示:

d = dict()

for key in d:
    dictValue = d[key]

    dictMerged = list(sorted(set(dictValue), key=dictValue.index))
    print (key, dictMerged)
368501900 ['GH', 'CBM']
368499531 ['AA']
368500556 ['AA']
368500559 ['GT']
368507728 ['GH']
368496466 ['AA']
368504803 ['GT']
368503093 ['GT']
但是,我想删除列表中数字后的字符串,以便得到如下结果:

d = dict()

for key in d:
    dictValue = d[key]

    dictMerged = list(sorted(set(dictValue), key=dictValue.index))
    print (key, dictMerged)
368501900 ['GH', 'CBM']
368499531 ['AA']
368500556 ['AA']
368500559 ['GT']
368507728 ['GH']
368496466 ['AA']
368504803 ['GT']
368503093 ['GT']
我认为应该在dictValue和dictMerged之间插入代码,但我不能给出逻辑。
请,有什么想法吗?

在开始时导入此内容

    import re
现在在dictValue和dictMerged之间使用这一行

    new_dict_value = [re.sub(r'\d.*', '', x) for x in dictValue]

然后在下一行中使用新的dict值

    import re
现在在dictValue和dictMerged之间使用这一行

    new_dict_value = [re.sub(r'\d.*', '', x) for x in dictValue]

然后在下一行中使用新的

字符串对象有一个很好的
.isdigit()
方法。下面是一些用于清理数据的非re解决方案

普通旧循环:

values = ['GT1.hmm  ', 'GT4.hmm  ']
clean_values = []
for item in values:
    clean_item = []
    for c in item:
        if c.isdigit():
            break
        clean_item.append(c)
    clean_values.append("".join(clean_item))
使用
StopIteration
异常作为生成器表达式内部的
中断来进行列表理解:(注意:在列表理解中使用此
stop()
方法不起作用,它需要一个生成器表达式,通常由
()
表示,但在
内部。join()
这些是可选的

def stop():
    raise StopIteration

values = ['GT1.hmm  ', 'GT4.hmm  ']
clean_values = ["".join(c if not c.isdigit() else stop() for c in item) for item in values]
使用以下方法列出理解:

示例来自:


字符串对象有一个很好的
.isdigit()
方法。下面是一些清理数据的非
re
解决方案

普通旧循环:

values = ['GT1.hmm  ', 'GT4.hmm  ']
clean_values = []
for item in values:
    clean_item = []
    for c in item:
        if c.isdigit():
            break
        clean_item.append(c)
    clean_values.append("".join(clean_item))
使用
StopIteration
异常作为生成器表达式内部的
中断来进行列表理解:(注意:在列表理解中使用此
stop()
方法不起作用,它需要一个生成器表达式,通常由
()
表示,但在
内部。join()
这些是可选的

def stop():
    raise StopIteration

values = ['GT1.hmm  ', 'GT4.hmm  ']
clean_values = ["".join(c if not c.isdigit() else stop() for c in item) for item in values]
使用以下方法列出理解:

示例来自:


正则表达式和oneliner for loop!就是这样!非常感谢!正则表达式和oneliner for loop!就是这样!非常感谢!