在文本文件中查找字符串,然后在Python中打印以下行的第一个单词

时间:2015-05-27 16:54:19

标签: python

我想在文本文件中找到一个关键字。然后,打印以下3行中的前3个单词。

这是我的文本文件的例子:

...
NAME SP IPHASW D HRMM SECON ...
ABCD BH YZ     A 1236 53.70
EFGH BH XH     A 1243 56.80 
IJKL SZ TU     B 1248 32.30
MNOP SZ RT       1252 18.50
QRST BH DF     B 1253 54.40

所以,我想找到字符串:“NAME”,然后打印下面的“ABCD”,EFGH“和”IJKL“。

这是我在Python中的代码:

sfile=open("file.txt")

while True:

  line = sfile.readline()

  if line.startswith('NAME'):       
    item1 = sfile.readline()[0:4]
    item2 = sfile.readline()[0:4]
    item3 = sfile.readline()[0:4]
    break


sfile.close()

但它不起作用......

任何帮助都将不胜感激!谢谢:)

3 个答案:

答案 0 :(得分:0)

您需要采取的第一步是将Text文件转换为合适的数据结构,我为此问题选择了Dictionary,您也可以使用嵌套列表。

其次,我将各列的名称转换为此Dictionary的键,然后将这些列下的行值指定为该键的值。

dictionary = {}
with open("sample.txt") as sfile:
    data = sfile.readlines()
    keys = data[0].split()
    for k in keys:
        #For creating an empty dictionary
        dictionary[k] = []
    for values in data[1:]:
        for i,value in enumerate(values.strip().split()):
            dictionary[keys[i]].append(value)
    #print dictionary #To review the data structure.

keyword = "NAME"#raw_input("Please enter the keyword:")
print dictionary[keyword][:3]

答案 1 :(得分:0)

这很有效,不确定它是否适合您。

anchor

答案 2 :(得分:0)

好吧,我已经解决了我的问题!

这是我的解决方案:

  sfile=open("file.txt")
  data_sfile=sfile.read()
  myArray = data_sfile.split('\n') 

  for i in range(len(myArray)):
        if myArray[i].find("NAME ")>=0:
          item1 = myArray[i+1]
          item2 = myArray[i+2]
          item3 = myArray[i+3]
          break

      item1 = item1 [0:5] 
      item2 = item2 [0:5] 
      item2 = item2 [0:5]

  sfile.close()

好吧,这不是最漂亮的解决方案,但它确实有效!

感谢您的回答