2017-07-03 83 views
-1

我试图找到一种方法将我搜索的字符串拆分为几个子元素以查找信息。 我的文本具有这样的结构:Python:将字符串拆分为不同的元素之后,

INPUT_1_NAME=INPUT_1_NAME,INPUT_1_SDI_ERRCNT=0,INPUT_1_STANDARD=625/25i,INPUT_1_STATE=OK,INPUT_1_TYPE=HD/SD/3G SDI,INPUT_2_IDENT=2,INPUT_2_NAME=INPUT_2_NAME,INPUT_2_SDI_ERRCNT=0, 

我的剧本至今是:

with open('Test.rtf') as f: 
    for line in f: 
     if 'NAME=NEQ1-VIF2601' in line: 

我搜索在设备NEQ1-VIF2601的信息,整个文本文件。现在我想从这个字符串中找到INPUT_1_SDI_ERRCNT信息,例如

+1

蟒蛇文档是你的朋友,'somestring.split(...)'太。 – Morb

+1

我还没有得到,你尝试。ü可以在你的问题添加更多的信息,表示输入,在各自的输出更多详细信息 –

+0

我的输入是Test.rtf它是从服务器生成的文本文件,我过滤掉了设备名称= NEQ1-VIF2601。现在我想过滤输出INPUT_1_SDI_ERRCNT = 0信息将其写入新文件。 –

回答

0

你的意思是这样的吗?这将在每一个逗号分割线和每一个元素产生拆分left(等号的左边)和right(平等 - 符号的右侧)

with open('Test.rtf') as f: 
     for line in f: 
      for element in line.split(","): 
       left, right = element.split("=")[0], element.split("=")[1] 
+0

我认为这是正确的方法。我很抱歉,我昨天开始使用Python,因为我需要一个项目。 基本上我想过滤掉INPUT_1_SDI_ERRCNT的值。 –

+1

如果元素中有多个“=”,例如' “A = 1 = 2”'?你的代码只会丢弃'= 2'部分。你想要一个错误吗?使用'left,right = element.split(“=”)'。你想要'= 2'部分吗?使用'left,right = element.split(“=”,maxsplit = 1)'。 –

+0

当代码运行到这个if语句中时,您可以遍历元素直到'left =='INPUT_1_SDI_ERRCNT''这个'right'变量包含您所需的信息 – talaub

0

注: -请确保当您对其他任何查询都应该可以理解,以便您可以非常方便快捷地获得解决方案。

解决方案是这样的。您可以在拆分输入字符串“”再新的列表你会得到,然后检查“INPUT_1_SDI_ERRCNT是目前新名单内,并从这个新的列表中获取价值

解决方案: -

find_str = 'INPUT_1_SDI_ERRCNT' 
for a in l: 
    k = a.split('=') 
    if k[0] == find_str: 
     print(k[1])