我想获取一个xsl
文件的参数,该参数用于将xml
文件转换为csv
文件。
我特别想得到这一行:
<xsl:param name="sep" select="','"/>
我尝试过的事情:
with open(file, "r") as file:
content = file.readlines()
regex = re.compile(r"""<xsl:param +name *= *"[0-9A-Za-z]+" +select *= *"\\'.\\'"/>""")
for line in content:
print(line)
match = regex.match(line)
if match:
pass
# do something
我尝试了不同的正则表达式,但没有任何效果。
我正在使用python 3.6和lxml
对其进行转换。
编辑 xsl文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:param name="sep" select="','"/>
<xsl:param name="test" select="','"/>
<xsl:param name="test2" select="','"/>
<xsl:template match="/">title,artist,country,company,price,year
<xsl:for-each select="catalog/cd">
<xsl:value-of select="concat('"', title, '"', $sep, '"', artist, '"', $sep, '"',
country, '"', $sep, '"', company, '"', $sep, price, $sep, year, ' ')"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
您可以使用xml
解析器来做到这一点。像这样:
假设您的文件为test.xsl
。然后您可以这样做:
import xml.etree.ElementTree as ET
tree = ET.parse('test.xsl')
root = tree.getroot()
match = [c.attrib for c in root if 'param' in c.tag]
然后match
看起来像这样:
>>> print(match)
[{'name': 'sep', 'select': "','"}, {'name': 'test', 'select': "','"}, {'name': 'test2', 'select': "','"}]
我认为,您不需要整个行,只需要<>
标记之间的属性。拥有这些属性将使您可以创建所需的csv
文件。