python:从两个分隔符之间的一行中选择字符串,并与同一行中的其他字符串一起打印

python:从两个分隔符之间的一行中选择字符串,并与同一行中的其他字符串一起打印,python,string,replace,Python,String,Replace,我有一个字符串,如下所示: 输入:tempstr= fnameêkumarêlnameêashishêaddressêbangalore,indiaêPIN=8888888888,国籍êINDIANêcontactnumber=888337288,emergencynum=88822222 假设每个字段都用ê分隔。但有些字段用“=”或“,”分隔。 我需要python中的输出,如下所示。 输出:txt= fnameèkumarèlnameèashishè地址è印度班加罗尔èPINè88888888

我有一个字符串,如下所示: 输入:tempstr=

fnameêkumarêlnameêashishêaddressêbangalore,indiaêPIN=8888888888,国籍êINDIANêcontactnumber=888337288,emergencynum=88822222

假设每个字段都用ê分隔。但有些字段用“=”或“,”分隔。 我需要python中的输出,如下所示。 输出:txt=

fnameèkumarèlnameèashishè地址è印度班加罗尔èPINè88888888è国籍è印度人è联系电话è88833728;紧急情况è8882222

我尝试用replace函数替换“=”和“'”,但它也替换地址值中的值字段:

def replace_all(text, dic):
  for i, j in dic.iteritems():
  text = text.replace(i, j)
return text
reps={", ":"ê",
  "=":"ê"}

txt = replace_all(tempstr, reps)
print txt

使用正则表达式可以在列表中包含的关键字后跟
=
时排除替换:
fname,lname,address,PIN,national,contactnumber,emergencynum
,只需添加所有需要的关键字即可

tempstr=r'fnameêkumarêlnameêashishêaddressêbangalore, indiaêPIN=888888, nationalityêINDIANêcontactnumber=888337288, emergencynum=888222222'
outputstr = re.sub(r'[=,]\s*(?=fname|lname|address|PIN|nationality|contactnumber|emergencynum)', 'ê', tempstr)
print outputstr
输出:

fnameêkumarêlnameêashishêaddressêbangalore, indiaêPIN=888888ênationalityêINDIANêcontactnumber=888337288êemergencynum=888222222
[=,]    : = sign or comma
\s*     : 0 or more spaces
(?=     : start positive lookahead, 
          it makes sure we have one of the following keyword after
    fname
    |
    lname
    |
    address
    |
    PIN
    |
    nationality
    |
    contactnumber
    |
    emergencynum
)               : end lookahead
说明:

fnameêkumarêlnameêashishêaddressêbangalore, indiaêPIN=888888ênationalityêINDIANêcontactnumber=888337288êemergencynum=888222222
[=,]    : = sign or comma
\s*     : 0 or more spaces
(?=     : start positive lookahead, 
          it makes sure we have one of the following keyword after
    fname
    |
    lname
    |
    address
    |
    PIN
    |
    nationality
    |
    contactnumber
    |
    emergencynum
)               : end lookahead

ftxt=fnameêkumarêlnameêashishêaddressêbangalore,indiaêPIN=88888888,国籍êINDIANêcontactnumber=888337288,emergencynum=88822222'
out=re.sub(r)(?不清楚。在您的字符串中,保留两个逗号中的一个。这正常吗?另外,您可以添加一些代码来向我们展示您的尝试吗?尝试更好地解释并输入一些您尝试过的代码。还请描述此输出的目标,因为我怀疑有一些不好的设计。感谢您的响应,但这完全是硬编码的。在实际场景中有一份报告中总共有大约200个这样的字段。总共有10个这样的报告有不同的字段名。我需要一些概括形式。@KumarAshish:恐怕这是不可能的。无法区分两个字段之间的逗号和字段内的逗号。