python - 我需要从python中的文本文件中获取特定数据
问题描述
我从字符串输出中有一些信息
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 中的字符串上使用 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 所在的位置即可动态设置它。
推荐阅读
- shopware - 如何将第三方依赖 javascript 添加到 Shopware 6
- python - 根据样本数据输入再现数据
- python - 如何通过 Anaconda 在 Python、Spyder 上使用 Flask?
- java - 在 Spring Boot 的应用程序属性中连接到 RabbitMQ 而不提供用户名和密码
- python - 多处理以随机顺序生成数字
- mongodb - 从 helm 安装后无法使用 root 密码登录 mongo
- r - 使用 na.omit 或 NA.RM 和 mapply 在 Datafrme 的多个列中忽略 R 中的 NA
- angular - 无法显示模态角度
- java - 如何将类型“java.lang.String”的值转换为属性“typeService”所需的类型“com.boots.models.TypeServiceModel”?(更新))
- html - 表格高度未正确分配