Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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 如何防止xpath在遇到的标记上添加逗号_Python_Xpath_Web Scraping_Scrapy - Fatal编程技术网

Python 如何防止xpath在遇到的标记上添加逗号

Python 如何防止xpath在遇到的标记上添加逗号,python,xpath,web-scraping,scrapy,Python,Xpath,Web Scraping,Scrapy,如何修改以下xpath命令,使其不在任何子标记上添加逗号 xpath('/a//text()').extract() 电流输出为 C,-(,K,1,, ,K,2,)-convexity 但我想要的是: C-(K1, K2)-convexity 页面来源的相关部分: <a href=".."><i>C</i>-(<i>K</i><sub>1</sub>, <i>K</i><sub

如何修改以下xpath命令,使其不在任何子标记上添加逗号

xpath('/a//text()').extract()
电流输出为

C,-(,K,1,, ,K,2,)-convexity
但我想要的是:

C-(K1, K2)-convexity
页面来源的相关部分:

<a href=".."><i>C</i>-(<i>K</i><sub>1</sub>, <i>K</i><sub>2</sub>)-convexity</a>

您提供的xpath中没有任何错误,它只是返回多个结果,一个列表,您需要创建一个字符串:

>>> ''.join(response.xpath('/a//text()').extract())
u'C-(K1, K2)-convexity'
这是我的



如果这个值将成为一个值,那么最好利用它

您提供的xpath中没有任何错误,它只是返回多个结果,一个列表,您需要它来生成一个字符串:

>>> ''.join(response.xpath('/a//text()').extract())
u'C-(K1, K2)-convexity'
这是我的



如果这个值将成为一个值,那么最好利用它

在捕获“a”标记后,您似乎只想剥离html标记,因此我将使用正则表达式:

In [3]: import re
In [4]: [re.sub('<[^<]+?>', '', x) for x in response.xpath('/a').extract()]
Out[4]: [u'C-(K1, K2)-convexity']
[3]中的
:导入re

在[4]:[re.sub('看来,在捕获'a'标记后,您只需剥离html标记,因此我将使用正则表达式:

In [3]: import re
In [4]: [re.sub('<[^<]+?>', '', x) for x in response.xpath('/a').extract()]
Out[4]: [u'C-(K1, K2)-convexity']
[3]中的
:导入re

在[4]:[re.sub('谢谢,我必须在
';'中添加正则表达式。join()
,这样单锚项目中的逗号不会与多锚项目之间的逗号混合。谢谢,我必须在
';'中添加正则表达式。join()
这样,单锚项目中的逗号就不会与多个锚项目之间的逗号混合。有没有办法编辑它,使找到的多个a用分号分隔?现在根本没有分隔符。@user1892697是的,只需尝试
“;”。join(response.xpath(“/a//text()”).extract())
。它对您有用吗?不,这也会在a中添加分号,即
C;-(;K;1;,;K;2;)-凸性
@user1892697尝试使用类似于:
';'的内容遍历a元素。join([e.xpath('string('))[0]。在响应中提取()e.xpath('/a'))
@elias谢谢,这非常有效(并且输出与todinov的
';')相同。join([re.sub('是否有任何方法可以编辑它,使找到的多个a用分号分隔?现在根本没有分隔符。@user1892697是的,请尝试
';')。join(response.xpath('/a//text()).extract())
。它对您有用吗?不,这也会在a中添加分号,即
C;-(;K;1;,;K;2;)-凸性
@user1892697尝试使用类似于:
';'的内容遍历a元素。join([e.xpath('string('))[0]。在响应中提取()e.xpath('/a'))
@elias谢谢,这非常有效(并且输出与todinov的
';'相同