返回Python中带正则表达式的字符串列表之间的所有字符串

时间:2016-09-16 05:47:02

标签: regex python-3.x

我有一个字符串列表,如下所示:

list = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6']

我想检索一对字符串之间的所有项目和索引。例如,'a2'和'a6'之间的所有项目。

有没有办法用正则表达式做到这一点?

欲望输出如下: (实际上我只需要索引,因为我可以使用索引检索所有值)。 想要正则表达式的理由是;我正在尝试从PDF中挖掘输出,我正在尝试挖掘文本,并从PDF中提取的文本中创建一个包含所有输出的大列表。从这个从PDF创建的列表中,我试图自动化这些文本提取PDF。由于它们可以有可变文本和不同格式,我希望能够采用各种格式来表示相同的数据。我认为正则表达式允许采用轻微可变格式的文本,然后使用所需的格式进行转换。

参考列表示例:

 list = ['name', 'Mark', 'Smith', 'location', 'Florida', 'Coast', 'FL',  'date']
         location_indices = [3, 6]
desired namelst = ['name', 'Mark', 'Smith']
        location= ['location', 'Florida', 'Coast', 'FL']

我认为最好的方法是获取位置和日期之间的索引,然后我可以生成位置列表。现在,由于我的原始列表在参考列表中可能略有不同,我认为正则表达式为我提供了灵活性,使我可以重新格式化不同的原始列表。

1 个答案:

答案 0 :(得分:0)

让我们定义你的清单:

>>> lst = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6']

(为了不覆盖内置,我将列表重命名为lst。)

现在,让我们检索从a2a6的所有项目的索引和值:

>>> [(i,x) for (i,x) in enumerate(lst) if lst.index('a2')<=i<=lst.index('a6')]
[(1, 'a2'), (2, 'a3'), (3, 'a4'), (4, 'a5'), (5, 'a6')]