如何从regex和group的值生成字符串

2024-09-30 16:40:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有regexp的twitter配置文件url和某人的twitter配置文件url。我可以很容易地从网址提取用户名。你知道吗

>>> twitter_re = re.compile('twitter.com/(?P<username>\w+)/')
>>> twitter_url = 'twitter.com/dir01/'
>>> username = twitter_re.search(twitter_url).groups()[0]
>>> _
'dir01'

但是如果我有regexp和username,我怎么得到url?你知道吗


Tags: recomurlsearch配置文件usernametwitter用户名
3条回答

雷格森不是双向的。您可以使用它们来解析字符串,但不能从结果中生成字符串。您可能应该研究另一种获取url的方法,如基本字符串插值或URI模板(请参见http://code.google.com/p/uri-templates/

为什么你需要正则表达式呢-只要附加字符串就行了。你知道吗

base_url = "twitter.com/"
twt_handle = "dir01"
twit_url = base_url + twt_handle

如果您不是在寻找将任何正则表达式转换为格式字符串的通用解决方案,而是可以硬编码的解决方案:

twitter_url = 'twitter.com/%(username)s/' % {'username': 'dir01'}

…应该给你你需要的。你知道吗

如果您想要一个更通用(但不是难以置信的健壮解决方案):

import re

def format_to_re(format):
    # Replace Python string formatting syntax with named group re syntax.
    return re.compile(re.sub(r'%\((\w+)\)s', r'(?P<\1>\w+)', format))

twitter_format = 'twitter.com/%(username)s/'
twitter_re = format_to_re(twitter_format)

m = twitter_re.search('twitter.com/dir01/')
print m.groupdict()
print twitter_format % m.groupdict()

给了我:

{'username': 'dir01'}
twitter.com/dir01/

最后,在Patternhere中可以找到我自己使用的稍微大一些、更完整的解决方案。你知道吗

相关问题 更多 >