![](/img/trans.png)
[英]Regex check if a string has any numbers followed by units in python and modify it
[英]Check if a string contains any amount of numbers followed by a specific letter [Python]
具体来说,我正在尝试在字符串中找到度数。 例如,我希望能够在字符串中找到可能看起来像“blahblah 3c blah blah blah”的程度。 如果可能的话,我希望能够将它保存为字符串。
我正在思考的一些伪代码
a1 = "asdasdas 33F asdasdasds"
if a1 has int followed by 'F','f','C','c':
a2 = "33F"
对不起,如果这是不可能的,或者如果我没有解释得那么好。 我对python很新。 我能够想出以下内容:
if any(str.isdigit(c) for c in a1) and any(('F','f','C','c')):
但即使int和字母没有连接,这也可以工作,比如“asdadsc 3 asdasddas”。 这有可能吗? 谢谢!
一个简单的RegEx变体将是:
import re
a1 = "asdasdas 33F asdasdasds asdasdas 33C asdasdasds asdasdas 33c asdasdasds asdasdas 33f asdasdasds"
result = re.findall("\d{1,3}[FfCc]", a1) # finds groups of 1, 2, or 3 connected digits followed by any one of 'F', 'f', 'C', or 'c'
print(result)
import re
a1 = "asdasdas 33F asdasdasds"
degree = re.search(r"(?P<degree>[0-9]+F)",a1).group("degree")
您可以使用模块re(正则表达式或正则表达式)。 re.search()将扫描字符串,查找正则表达式模式生成匹配的第一个位置,并返回相应的MatchObject实例。 如果字符串中没有位置与模式匹配,则返回None。
例
import re
b = re.search('\d+<following_letter>', a1)
print b.group(0)
对于你的例子:
import re
b = re.search('\d+F', a1)
print b.group(0)
我宁愿用RE
(正则表达式)来做
以下是测试字符串的简单示例:
import re
regex = r"\d+(F|f|C|c)" # regep itself
test_str = ("asdasdas 33F asdasdasds\n"
"sdfasd 333c sadfsdaf\n"
"asdfasd 33f asdfasd 33C 33F 33c ")
matches = re.finditer(regex, test_str)
for match in matches:
print ("{match}".format(match = match.group()))
你试过re
模块了吗? `
import re
degrees_re = re.compile('\d+\W')
degres_re.findall("asdasdas 33F asdasdasds")
Out[4]: ['33F']
或仅为摄氏和华氏:
degrees_re = re.compile('\d+\[CFcf]')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.