繁体   English   中英

检查字符串是否包含任意数量的数字后跟特定字母[Python]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM