仅当分隔符存在于字符串上时,才使用两个不同的分隔符拆分 Python 字典中的字符串

Posted

技术标签:

【中文标题】仅当分隔符存在于字符串上时,才使用两个不同的分隔符拆分 Python 字典中的字符串【英文标题】:Split a string in Python dictionary with two different separators only if the separator exist on the string 【发布时间】:2021-07-28 22:45:14 【问题描述】:

我有一本字典:

'...': '...',
'unite_fonctionnelle': 'text to keeep',
'...': '...'

在这种情况下,字典很好,但有时需要清理 unite_fonctionnelle 的值,语法始终相同:

'...': '...',
'unite_fonctionnelle' : 'asjbzjqnfknqfsnf<Run>text to keeep</Run>qsdqsdqsdqsfqsfegdhfkdnh',
'...': '...'

当标签&lt;Run&gt;&lt;/Run&gt; 出现在字符串中时,我想转换unite_fonctionnelle 的值,以仅保留两个标签之间的文本。如何使用 split() 做到这一点?

【问题讨论】:

见:***.com/questions/3368969/…。 【参考方案1】:

您可以在这里简单地使用正则表达式。

试试这个:

import re

for key, value in dic.items():
    if '<Run>' in str(value):
        output = re.search('<Run>(.*)</Run>', str(value))
        print(output.group(1))

【讨论】:

谢谢,我将它改编为我的代码,它运行良好! 欢迎 :) @Howins【参考方案2】:

给定d您的字典:

for k, v in d.items():
    if '<Run>' in v:
        d[k] = v.split('<Run>')[1].split('</Run>')[0]

【讨论】:

【参考方案3】:

这是我的方法。

import re
dic = 
'unite_fonctionnelle' : 'asjbzjqnfknqfsnf<Run>text to keeep</Run>qsdqsdqsdqsfqsfegdhfkdnh'

for key,val in dic.items():
    if(all(x in val for x in ['<Run>','</Run>'])):dic[key] = re.split('<Run>|</Run>',val)[1]

【讨论】:

以上是关于仅当分隔符存在于字符串上时,才使用两个不同的分隔符拆分 Python 字典中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

仅当表中不存在该值时才更新 SQL 列

仅当两个字符串不存在且其他两个字符串存在时,我才需要一个 python re 来匹配

[HAOI2016]找相同字符(后缀数组+单调栈)

提取每组两个不同字符串之间的每个字符串

获取两个不同的开始和结束分隔符之间的所有子字符串

Oracle:使用分隔符连接,但前提是两个操作数都不为空