Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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_Regex - Fatal编程技术网

Python 提取大字符串的部分

Python 提取大字符串的部分,python,regex,Python,Regex,我正在用python编程,我正在尝试获取一个网站的页面源代码。例如,我试图提取upc编号。这只是页面的一部分。upc周围有一堆字母、数字和符号 myString = someLargeString + '<meta property=og:upc content=02276254215 />' + anotherLargeString myString=someLargeString+''+另一个largestring 我想我可以使用许多分割来提取它,但我想知道是否有更好的方法。

我正在用python编程,我正在尝试获取一个网站的页面源代码。例如,我试图提取upc编号。这只是页面的一部分。upc周围有一堆字母、数字和符号

myString = someLargeString + '<meta property=og:upc content=02276254215 />' + anotherLargeString
myString=someLargeString+''+另一个largestring
我想我可以使用许多分割来提取它,但我想知道是否有更好的方法。我学习了一些关于使用findall和正则表达式的知识,但我不确定这是否可以应用于这里。拆分是最好的方式吗


如有任何帮助或建议,将不胜感激。非常感谢。

regexp可能更好,因为它更快,更易于维护,更易于阅读。这是一个关于regexps的很好的教程,如果你打算长期做这个网站的解析工作,你可能应该阅读它

例如,如果只想找到一个匹配项:

import re

m = re.search('upc content=([0-9]*)', string)
if m:
   upc = m.group(1)
   print upc
如果您打算重用正则表达式,那么最好预先对其进行预编译,如图所示 myString='' 打印(关于findall(r'upc\s+content=(\d+),myString)) ['02276254215']
另一种提取大字符串部分的方法是使用字符串的find方法,如果您知道字符串所处的位置:

myString = '<meta property=og:upc content=02276254215 />'

FirstString = "content="
SecondString = " />"

print(myString[myString.find(FirstString)+len(FirstString)+1:
myString.find(SecondString)])

['02276254215']
myString=''
FirstString=“content=”
SecondString=“/>”
print(myString[myString.find(FirstString)+len(FirstString)+1:
myString.find(第二个字符串)])
['02276254215']

您可以在FirstString和SecondString之间提取字符串。

这是您唯一要查找的内容吗?如果不是,你可能想看看。除此之外,一个简单的正则表达式可能就足够了。我还想学习一些其他东西,但这可能很有用。谢谢你。我会调查的,难以置信。这比我想象的要简单得多;我想得太多了。我将阅读该链接。如果upc编号之间可能有字母,也可能没有字母,如“02276abc254215”,我们如何提取报价中的所有内容?在a中,您可以指定类可以匹配的所有允许字符。所以只要把它从
[0-9]
扩展到
[0-9a-z]
或者
[0-9a-zA-z]
,我想我现在明白了。我感谢你的帮助。
myString = '<meta property=og:upc content=02276254215 />'

FirstString = "content="
SecondString = " />"

print(myString[myString.find(FirstString)+len(FirstString)+1:
myString.find(SecondString)])

['02276254215']