Python:重新发布;关于findall();

Python:重新发布;关于findall();,python,regex,python-2.7,Python,Regex,Python 2.7,请参阅上面的代码。这里我想通过正则表达式在字符串中找到寄存器名,即wub。我已经为此写了报告。如果您运行这段代码,它将给出类似于['wub']的输出,但我只需要wub,不需要括号或引号。那么这里要做什么修改呢 非常感谢您的帮助。您可以使用re.search()(或re.match()-取决于您的需要)并获取捕获组: string = "RegisterParameter uri wub {" RegisterName = re.findall("RegisterParameter uri ([^

请参阅上面的代码。这里我想通过正则表达式在字符串中找到寄存器名,即wub。我已经为此写了报告。如果您运行这段代码,它将给出类似于['wub']的输出,但我只需要wub,不需要括号或引号。那么这里要做什么修改呢


非常感谢您的帮助。

您可以使用
re.search()
(或
re.match()
-取决于您的需要)并获取捕获组:

string = "RegisterParameter uri wub {"
RegisterName = re.findall("RegisterParameter uri ([^ ]*) {",string)

print 'RegisterName is :',RegisterName
此外,您可能希望使用
\w*
而不是
[^]*
<代码>\w匹配任何单词字符

另见:


您可以使用
re.search()
(或
re.match()
-取决于您的需要)并获取捕获组:

string = "RegisterParameter uri wub {"
RegisterName = re.findall("RegisterParameter uri ([^ ]*) {",string)

print 'RegisterName is :',RegisterName
此外,您可能希望使用
\w*
而不是
[^]*
<代码>\w匹配任何单词字符

另见:


注册表名
是一个
列表
,只有一个
str
元素。如果问题是仅打印,您可以尝试:

>>> import re
>>> s = "RegisterParameter uri wub {"
>>> match = re.search("RegisterParameter uri ([^ ]*) {", s)
>>> match.group(1) if match else "Nothing found"
'wub'
输出:

print 'RegisterName is :', RegisterName[0]
PS:

  • 如果不确定变量的类型,请尝试打印它:

    RegisterName is : wub
    
  • 我建议您使用,名称为
    SomeName
    的标识符通常用作类的名称。对于变量,可以使用
    some\u name
    register\u name


注册表名
是一个
列表
,只有一个
str
元素。如果问题是仅打印,您可以尝试:

>>> import re
>>> s = "RegisterParameter uri wub {"
>>> match = re.search("RegisterParameter uri ([^ ]*) {", s)
>>> match.group(1) if match else "Nothing found"
'wub'
输出:

print 'RegisterName is :', RegisterName[0]
PS:

  • 如果不确定变量的类型,请尝试打印它:

    RegisterName is : wub
    
  • 我建议您使用,名称为
    SomeName
    的标识符通常用作类的名称。对于变量,可以使用
    some\u name
    register\u name


re.search
将找不到任何东西时,这将引发异常。我认为
re.search
的行返回
None
,而不是
'wub'
@Elisha好的,我应该一次停止做300件事:)当
re.search
将找不到任何东西时,这会引发一个异常。我认为
re.search
的行返回
None
,而不是
'wub'
@Elisha好的,我应该一次停止做300件事:)严格来说,使用
find\u all()
用于仅查找第一个匹配项。试想一下:例如,你会从一个表中获取所有数据,以便只获取第一行吗?虽然这样做可以让事情在这里顺利进行,但是,是的。严格来说,使用
find_all()
仅查找一个第一匹配项似乎是不正确的。试想一下:例如,您是否会从表中获取所有数据,以便只获取第一行数据?虽然它使这里的工作正常,但确实如此。