python-如何从文本文件的每一行中提取字符串?

2024-04-26 05:55:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,可以检测活动监视器的数量。 我想从每行中提取特定的数据并将其包含在列表中。

文本文件如下所示:

[EnumerateDevices]: Enumerating Devices.
DISPLAY\LGD03D7\4&ACE0355&1&UID68092928                     : Generic PnP Monitor
DISPLAY\ABCF206\4&ACE0355&1&UID51249920                     : Generic PnP Monitor
//
//   here can be more monitors...
//
2 matching device(s) found.

我需要得到文本中间UID后面的数字:680929295249920。。

我想做下一件事:

a.在文本中输入每一行

b.查看“UID”字符串是否存在

如果它存在:分裂(在这里我不知道该怎么做)。。被(“”)或(“&;”)拆分

你有什么好建议吗?我不明白如何在UID之后获取数字(例如,如果下一个数字比前一个数字长) 我怎样才能得到这样的命令:(“如果看到UID字符串,则获取所有数据,直到看到第一个空白)

知道吗? 谢谢


Tags: 数据字符串文本列表uid数量display数字
3条回答

您可以使用split()方法。

s = "hello this is a test"
words = s.split(" ")
print words

上述代码片段的输出是一个包含以下内容的列表:['hello', 'this', 'is', 'a', 'test']

在您的例子中,您可以在子字符串“UID”上进行拆分,并获取列表中的第二个元素以获取您要查找的数字。

请参阅此处的文档:https://docs.python.org/2/library/string.html#string.split

使用正则表达式:

import re
p =re.compile(r'.*UID(\d+)')
with open('infile') as infile:
    for line in infile:
        m = p.match(line)
        if m:
           print m.groups[0]

我将使用正则表达式来提取UID

例如

import re

regexp = re.compile('UID(\d+)')

file = """[EnumerateDevices]: Enumerating Devices.
          DISPLAY\LGD03D7\4&ACE0355&1&UID68092928                     : Generic PnP Monitor
          DISPLAY\ABCF206\4&ACE0355&1&UID51249920                     : Generic PnP Monitor
          //
          //   here can be more monitors...
          //
          2 matching device(s) found."""

print re.findall(regexp, file)

相关问题 更多 >