如何获得这两个';111=';使用python正则表达式
这是mu\y代码:如何获得这两个';111=';使用python正则表达式,python,regex,Python,Regex,这是mu\y代码: a = '111 = dw11qdwq\n111 = aaaaa' print re.search(r'111 = (\S*)',a).group(1) 它显示:dw11qdwq 但是我想要得到dw11qdwq和aaaaaa 那我该怎么办 谢谢 已更新 a = '111 = dw11qdwq\n111 = aaaaa' b=re.findall(r'111 = (\S*)',a) d = ['qqqqqq','wwwwwww'] a= re.sub(r'111 = (
a = '111 = dw11qdwq\n111 = aaaaa'
print re.search(r'111 = (\S*)',a).group(1)
它显示:dw11qdwq
但是我想要得到dw11qdwq
和aaaaaa
那我该怎么办
谢谢
已更新
a = '111 = dw11qdwq\n111 = aaaaa'
b=re.findall(r'111 = (\S*)',a)
d = ['qqqqqq','wwwwwww']
a= re.sub(r'111 = (\S*)',lambda x: d[],a)
以及如何将dw11qdwq
替换为qqqq
,aaaaa
替换为wwwww
我想得到'111=qqqq\n111=wwwwwww'
更新:
现在没事了:
d = {'dw11qdwq':'qqqqqq' ,'aaaaa':'wwwwwww'}
a = '111 = dw11qdwq\n111 = aaaaa'
print repr(a)
a= re.sub('(111\s*=\s*)(\S*)',lambda mat: mat.group(1)+d[mat.group(2)],a)
print repr(a)
这将匹配具有1个或多个非空格字符的任何单词。(我相当确定您不希望匹配0个或更多字符(这是“*”提供的))
编辑:
更新的代码:
replacements = {"dw11qdwq":"qqqqqq" , "aaaaa" : "wwwwwww"}
a = '111 = dw11qdwq\n111 = aaaaa'
for key, value in replacements.iteritems():
a = a.replace(key, value)
a现在是:
"111 = qqqqqq\n111 = wwwwwww"
这将匹配具有1个或多个非空格字符的任何单词。(我相当确定您不希望匹配0个或更多字符(这是“*”提供的))
编辑:
更新的代码:
replacements = {"dw11qdwq":"qqqqqq" , "aaaaa" : "wwwwwww"}
a = '111 = dw11qdwq\n111 = aaaaa'
for key, value in replacements.iteritems():
a = a.replace(key, value)
a现在是:
"111 = qqqqqq\n111 = wwwwwww"
我认为这应该回答您的编辑:
a = '111 = dw11qdwq\nsome other line\n111 = aaaaa'
b = re.split(r'(111 = )\S*', a)
d = ['qqqqqq','wwwwwww']
a = "".join(x + d.pop(0) if x == '111 = ' else x for x in b)
print a
编辑:现在应该可以正确处理不匹配的文本。我认为这应该回答您的编辑:
a = '111 = dw11qdwq\nsome other line\n111 = aaaaa'
b = re.split(r'(111 = )\S*', a)
d = ['qqqqqq','wwwwwww']
a = "".join(x + d.pop(0) if x == '111 = ' else x for x in b)
print a
编辑:现在应该可以正确处理不匹配的文本。以下是修改后问题的解决方案:
reduce(lambda result, (original, replacement): result.replace('111 = ' + original, '111 = ' + replacement), d, a)
a = '111 = dw11qdwq\n111 = aaaaa'
d = ['qqqqqq','wwwwwww']
# i want to get '111 = qqqqqq\n111 = wwwwwww'
它以
a
开始,并贯穿d
中的每个替换(由lambda语句中解包为original
和replacement
的键值元组表示),并将其应用于字符串。以下是您修改后问题的解决方案:
reduce(lambda result, (original, replacement): result.replace('111 = ' + original, '111 = ' + replacement), d, a)
a = '111 = dw11qdwq\n111 = aaaaa'
d = ['qqqqqq','wwwwwww']
# i want to get '111 = qqqqqq\n111 = wwwwwww'
它以a
开始,并贯穿d
中的每个替换(由lambda语句中解包的键值元组表示为original
和replacement
),并将其应用于字符串。您的问题:
reduce(lambda result, (original, replacement): result.replace('111 = ' + original, '111 = ' + replacement), d, a)
a = '111 = dw11qdwq\n111 = aaaaa'
d = ['qqqqqq','wwwwwww']
# i want to get '111 = qqqqqq\n111 = wwwwwww'
您不需要regexp
out = '\n'.join(a1.split(' = ')[0] + ' = ' + d1 for a1,d1 in zip(a.splitlines(), d))
返回:
'111 = qqqqqq\n111 = wwwwwww'
你的问题:
reduce(lambda result, (original, replacement): result.replace('111 = ' + original, '111 = ' + replacement), d, a)
a = '111 = dw11qdwq\n111 = aaaaa'
d = ['qqqqqq','wwwwwww']
# i want to get '111 = qqqqqq\n111 = wwwwwww'
您不需要regexp
out = '\n'.join(a1.split(' = ')[0] + ' = ' + d1 for a1,d1 in zip(a.splitlines(), d))
返回:
'111 = qqqqqq\n111 = wwwwwww'
编辑
对不起,我忘了将111\s*=\s*
定义为一个组
你可以做任何一件事
import re
d = {'dw11qdwq':'qqqqqq' ,'aaaaa':'wwwwwww'}
a = '111 = dw11qdwq\n111 = aaaaa'
print repr(a)
a= re.sub('(111\s*=\s*)(\S*)',lambda mat: mat.group(1) + d[mat.group(2)],a)
print repr(a)
或
编辑
对不起,我忘了将111\s*=\s*
定义为一个组
你可以做任何一件事
import re
d = {'dw11qdwq':'qqqqqq' ,'aaaaa':'wwwwwww'}
a = '111 = dw11qdwq\n111 = aaaaa'
print repr(a)
a= re.sub('(111\s*=\s*)(\S*)',lambda mat: mat.group(1) + d[mat.group(2)],a)
print repr(a)
或
但是sting非常大,可能有很多
dw11qdwq
和很多aaaaa
,但是我只想更改111=dw11qdwq
,所以..但是sting非常大,可能有很多dw11qdwq
和很多aaaaaaa
,但是我只想更改111=dw11qdwq
,所以..哦,我没看到你找到了和我一样的更正,当我看到你对我的答案的评论时,我编辑得太快了。但是,您知道替换功能的用法吗?看我的编辑。哦,我没有看到你发现了和我一样的更正,当我看到你对我的答案的评论时,我编辑得太快了。但是,您知道替换功能的用法吗?请参阅我的编辑。