Skip to main content
 首页 » 编程设计

python之消除python脚本中最后一个字符串后的文本

2025年05月04日21JustinYoung

从表文件创建字典,其中某些列有特殊字符,如“|”但我需要删除最后一个“|”之后的所有文本。

例如:

A     this_is|my_A|best|result|      20 
B     this_is|my_B|best|result|mess  40 
C     this_is|my_C|best|result|me..  32 

我写这个是为了创建字典:

for line in file: 
        query = line.strip().split('\t')[0] 
        data =  line.strip().split('\t')[1:2] 
        subject = line.strip().split('\t')[1] 
        if query not in best_hit: 
                best_hit[subject] = data 

导致像这样的乱七八糟的字典:

d = {'A': 'this_is|my_A|best|result|, 20' ,'B': 'this_is|my_B|best|result|mess  40', 'C':'this_is|my_C|best|result|me..  32' } 

我的目的是在将其包含在字典中之前删除“mess”和“me..”文本,因为我需要这个值来与没有这些文本的其他列表进行比较。

A     this_is|my_A|best|result|      20 
B     this_is|my_B|best|result|      40 
C     this_is|my_C|best|result|      32 

我自己的解决方案:

old_result = line.strip().split('\t')[1] 
new_result = old_result.split('|') 
subject = new_result[0]+'|'+new_result[1]+'|'+new_result[2]+'|'+new_result[3]+'| 

请您参考如下方法:

拆分可能不符合性能,但算法更简单。

source = """ 
 
A   this_is|my_A|best|result|   20 
B   this_is|my_B|best|result|mess   40 
C   this_is|my_C|best|result|me..   32 
 
""" 
 
source = source.strip() 
source = source.split('\n') 
 
result = {} 
 
for i in xrange(len(source)): 
    asplit = source[i].split('\t') 
    bsplit = asplit[1].split('|') 
    bsplit[-1] = '' 
    asplit[1] = '|'.join(bsplit) 
 
    if not asplit[0] in result: 
        result[asplit[0]] = asplit[1] + '\t' + asplit[2] 
 
print result