【问题标题】:I need to get specific data from text file in python我需要从python中的文本文件中获取特定数据
【发布时间】:2020-09-17 03:53:06
【问题描述】:

我从字符串输出中获得了一些信息

subprocess.Popen(['/bin/grep', '-E', 'CLIENTS', p ], stdout=subprocess.PIPE, encoding='utf-8')

当我打印时,我会像下面这样

CLIENTS='ip-10-161-110-51:ip-10-161-111-52:ip-10-161-112-53'
ISCSI_CLIENTS='ip-10-161-110-51,ip-10-161-111-52-227,ip-10-161-112-53'
NFS_CLIENTS='ip-10-161-110-51,ip-10-161-111-52,ip-10-161-112-53'
CLIENTS='ip-10-161-110-43:ip-10-161-111-42:ip-10-161-112-41'
ISCSI_CLIENTS='ip-10-151-108-51,ip-11-161-111-42,ip-10-161-112-41'
NFS_CLIENTS='ip-10-121-110-32,ip-10-161-111-34,ip-10-161-112-35'

我如何合并它以获得如下输出

CLIENTS = ip-10-161-110-51:ip-10-161-111-52:ip-10-161-112-53:ip-10-161-110-43:ip-10-161-111-42:ip-10-161-112-41
NFS_CLIENTS = ip-10-161-110-51,ip-10-161-111-52,ip-10-161-112-53,ip-10-151-108-51,ip-11-161-111-42,ip-10-161-112-41
ISCSI_CLIENTS = ip-10-161-110-51,ip-10-161-111-52-227,ip-10-161-112-53,ip-10-151-108-51,ip-11-161-111-42,ip-10-161-112-41

【问题讨论】:

  • 这个文本文件没有换行符?

标签: python python-3.x


【解决方案1】:

尝试在 python 中对字符串使用 find 来获取字符串中所需文本的开始和停止位置。然后,您可以像这样从数组中调用该字符串。

    input_text = ""
    text_start = input_text.find("NODES")
    text_stop = input_text[text_start].find("# The") + text_start
    wanted_text = input_text[text_start:text_stop]
    print(wanted_text)

您可以扩展此想法,按名称(例如“NODES”或“FILERA=ip”)查找确切的起始位置,然后搜索结束字符(例如“,”),以便将每个项目彼此分开。我已经让上面的代码抓取了给定的所需文本批次,您只需将文件输出输入到代码中 input_text 所在的位置即可动态设置。

【讨论】:

    猜你喜欢
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多