【发布时间】:2016-06-13 19:02:18
【问题描述】:
我想从 XML 文件中读取许多正则表达式,将它们存储到列表中并使用它们。我的解决方案不起作用,我不知道为什么。
假设我有一个 XML,其中包含我想要存储在列表中的正则表达式。 XML 是这样的:
<?xml version="1.0" encoding="ISO-8859-1"?>
<my_xml>
<field>
<regex>\d+\.\d+</regex>
</field>
<field>
<regex>\d+</regex>
</field>
</my_xml>
所以,我逐行读取 XML 文件并构建包含所有正则表达式的列表:
tree = ET.parse("./my_file.xml")
root = tree.getroot()
listOfList = []
for field in root.findall('field'):
tmp = []
regex = str(field.find('regex').text)
tmp.append(regex)
listOfList.append(tmp)
现在,包含我的正则表达式的列表列表已准备就绪。事实上,如果我打印 listOfList 我会得到:
[['\\d+\\.\\d+'], ['\\d+']]
现在,是时候使用包含两个正则表达式的列表了。假设我有一个包含ver=4.0 的字符串,而我只想得到4.0。为此,我使用listOfList[0] 中包含的正则表达式。代码如下:
my_str = "ver=4.0"
print re.findall(str(listOfList[0]), my_str)
.....但是如果我这样做,python 会打印出 ['.'] 。
为什么python打印出['.']而不是4.0?我该如何解决这个问题?
谢谢。
【问题讨论】:
-
什么是
listOfRegex?你引入了变量但没有定义它。 -
编辑您的帖子以添加所有必要的元素以了解您的问题并进行测试。另一个示例,字段标记不会出现在您的 xml 字符串中。显示更多 xml。简而言之,在问题本身中添加重现 [问题] 所需的最短代码。
-
您编写代码的方式使
r'成为正则表达式的一部分。不是。 -
@CasimiretHippolyte 现在更清楚了。
-
@raphv 我删除了
r',但现在打印的是['.'],而不是4.0