python:从两个分隔符之间的一行中选择字符串,并与同一行中的其他字符串一起打印
我有一个字符串,如下所示: 输入: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函数替换“=”和“'”,但它也替换地址值中的值字段: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
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:恐怕这是不可能的。无法区分两个字段之间的逗号和字段内的逗号。