一个包含数千个字符的字符串,我如何只打印被“-”包围的字符
例如,如果有一个包含这些字符的字符串,
438429834njnbjjj"28.30"98nj76789889jkljlkjllmm82
如何打印
28.30
我知道 Regex,但不知道它是否可以像这样使用。抱歉,我是 Python 新手。
请您参考如下方法:
是的,您可以为此使用正则表达式:
import re
my_string = '438429834njnbjjj"28.30"98nj76789889jkljlkjllmm82'
matches = re.findall(r'".*?"', my_string)
工作原理:
它调用 re.findall 方法,该方法接受一个正则表达式和一个字符串,并返回该表达式的所有匹配项。
表达式本身很简单,解释如下:
" # matches a quote
. # matches any character
* # matches previous rule zero or more times
? # tells the previous rule to match as little as possible
" # matches a quote again
然后您可能会问“为什么我们需要这里的??”: 没有它,包含多个可能匹配项的字符串将只返回一个匹配项。示例:my_string = 'hi "important"asdf "also important"not important' 将匹配整个字符串中的第一个和最后一个引号,从而匹配所有 "important"asdf"also important ".
在你得到这个匹配列表后,你可以使用列表理解来删除数据周围的引号,如果你愿意,甚至可以将它转换为数字:
# removes first and last character of every match
unquoted = [string[1:-1] for string in matches]
# removes first and last characters and converts match to number
numbers = [float(string[1:-1]) for string in matches]
