Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将格式字符串与实际字符串进行比较_Python_String_Integer - Fatal编程技术网

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'