Python 将格式字符串与实际字符串进行比较
我有以下格式,作为字符串变量Python 将格式字符串与实际字符串进行比较,python,string,integer,Python,String,Integer,我有以下格式,作为字符串变量 format = '$<amount> has been received from <user>' 我想检查消息是否完全符合格式,并将数据保存在两个单独的变量中,在本例中为50和Hugh。 我在W3Schools和PyPi等一些网站上查看了RegEx,但找不到任何符合我所要做的事情。message=''从Hugh那里收到了50美元' 进口稀土 regex=re.compile(r'\$(\d+)已从(\w+)收到) 金额,用户=regex
format = '$<amount> has been received from <user>'
我想检查消息是否完全符合格式,并将数据保存在两个单独的变量中,在本例中为50
和Hugh
。我在W3Schools和PyPi等一些网站上查看了RegEx,但找不到任何符合我所要做的事情。
message=''从Hugh那里收到了50美元'
进口稀土
regex=re.compile(r'\$(\d+)已从(\w+)收到)
金额,用户=regex.findall(消息)[0]
打印(数量、用户)#50,休
您可以在:re.match(r“\$\d+已从(?:Hugh | John | Matt)收到)
中使用正则表达式。我以前从未使用过正则表达式,您能告诉我如何将其作为代码编写吗?我已经添加了一个链接到网站,在那里您可以找到此正则表达式的详细解释。还有一个链接指向我使用过的函数的文档,并进行了一些解释。查看它们;-)谢谢你的回答!很好用!只是想知道,在我尝试从中提取数据之前,是否可以运行if语句检查消息是否符合格式?@Hugh67945,如果您希望整个字符串与模式匹配,最好使用re.match()
。来自:“如果整个字符串与此正则表达式匹配,则返回相应的。如果字符串与模式不匹配,则返回None
。”。我建议你读一下。因为它是在文档中写的,None
总是错误的,所以您可以直接测试match()
的结果。您知道我如何能够转换成(\d+)
和(\w+)
?比如,让Python代码为我做这件事?更改消息格式sometimes@OlvinRoght@Hugh67945,\d
表示数字,+
表示一个或多个<代码>\w表示单词字符。您希望将模式转换为正则表达式,这可以使用re.sub(r“\”,r“(\\w+),re.escape(fmt))
完成。您的格式不包含任何有关数据类型的信息,因此我使用了\w
,其中包括大写和小写ascii字母、数字和下划线。
message = '$50 has been received from Hugh'