Python创建一个List文件并编写查询

时间:2017-06-04 19:20:37

标签: python list search text-extraction

很抱歉我的问题,如果它看起来很容易,但我是python的新手用户,我找不到解决它的方法。

我有一个" dish.py"包含一些子列表的文件

Fruits={"Ap":Apple
        "Br":Black Mulberry
        "Ch":Black Cherry
        }
Meals={"BN":Bean
        "MT":Meat
        "VG":Vegetable
        }
Legumes={"LN":Green Lentil
        "P": Pea
        "PN":Runner Peanut
        }

我想在一个代码中阻止dish.py文件,最后,我想在文件内部创建一个查询

with open("/home/user/Py_tut/Cond/dish.py", 'r') as dish:
           content = dish.read()
print dish.closed
dm=dict([dish])
nl=[x for x in dm if x[0]=='P']
for x in dm:
    x=str(raw_input("Enter word:"))
   if x in dm:
        print dm[x]
    elif x[0]==("P"):
        nl.append(x)
        print .join( nl)

可能看起来很乱,但是

  1. dm=dict([dish])我想创建一个查询词典
  2. nl=[x for x in dm if x[0]=='P']我想用" P"信
  3. 以下是我的问题:

    1。问:我认为我的dish.py文件存在问题。我该如何重组呢?

    2。问:如何将查询应用于文件并提取以&#34开头的单词; P" 非常感谢你提前

2 个答案:

答案 0 :(得分:1)

dict()无法加载字符串:

>>> dict("{'a': 1, 'b': 2}")
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
  dict("{'a': 1, 'b': 2}")
ValueError: dictionary update sequence element 0 has length 1; 2 is required

作为序列,它将是("{", "'", "a", "'", ":", ...

相反,我会使用json模块,更改dish.py格式(将扩展名更改为.json并使用JSON语法)并更改代码。

<强> dish.json

{
  "Fruits": {
     "Ap": "Apple",
     "Br": "Black Mulberry",
     "Ch": "Black Cherry"
  },
  "Meals": {
     "BN": "Bean",
     "MT": "Meat",
     "VG": "Vegetable"
  },
  "Legumes": {
     "GL": "Green Lentin",
     "P": "Pea",
     "PN": "Running Peanut"
  }
}

<强> __初始化__。PY

import json
with open("/home/user/Py_tut/Cond/dish.py", 'r') as dish:
    content = dish.read()
print(dish.closed)
dm = json.loads(content) # loads JSON
nl=[x for x in dm if x[0]=='P']
for x in dm:
    x = str(raw_input("Enter word:"))
    if x in dm:
        print dm[x]
    elif x[0] == ("P"):
        nl.append(x)
        print "".join(nl)
  
      
  1. 问:如何将查询应用于文件并提取以&#34; P&#34;开头的单词。非常感谢你提前
  2.   

假设您希望将每个字符串分隔为空格或换行符并将它们返回到列表中,我会这样做:

import re #Importing RegExp module

def wordsBeginP():
  with open("words.txt") as wordsfile: # Querying a file
    words = wordsfile.open

  parsed = re.sub(r"\n", " ", words) # Replace \n to " "
  return [for i in parsed.split(" ") if i[0] == "P"] # Return list of words

答案 1 :(得分:1)

所以我认为你不仅仅有这两个问题。 首先,如果你想包括“硬编码”和“ list s,dict等等,您可能希望{em} 位于工作目录中include dish

也就是说,如果python文件中的数据结构实际上在correct form

Fruits={"Ap":'Apple',
        "Br":'Black Mulberry',
        "Ch":'Black Cherry'
        }
Meals={"BN":'Bean',
        "MT":'Meat',
        "VG":'Vegetable'
        }
Legumes={"LN":'Green Lentil',
        "P":'Pea',
        "PN":'Runner Peanut'
        }

最后,您可以在include创建的命名空间(即菜)下搜索已命名并包含在文件中的所有数据结构。

for f in [dish.Fruits,dish.Meals,dish.Legumes]:
  for k,v in f.items():
    if k.startswith('P'):
      print k,v

对你来说也很有意思pickling(虽然有一些警告)。