2011-08-31 57 views
-1

我想從newreg.py中讀取變量(例如state,district,dcode等,一個長列表,然後從Web表單中提取數據)插入到insertNew.py中。python list substring

我目前已將整個文件讀入名爲'lines'的列表中。現在,如何從列表'行'中篩選每個變量(如狀態,分區等約50-55個變量,這個'list'也有html代碼,因爲我已經讀完了整個網頁)?

有沒有更好的方法來做到這一點?

一旦我能夠讀取每個變量,我需要連接這些值(轉換爲字符串)並插入到MongoDB中。

最後,當數據已插入到數據庫中時,會打開「home.py」頁面。

我給出的細節,使一個完整的畫面可用於某些解決方案,可以給。我希望它能夠保持簡單和完整。

我想遍歷列表(下面的示例)並篩選出變量(在'='符號值之前)。以下是在 'newreg.py':

狀態= form.getvalue( '州', 'ERROR')
區= form.getvalue( '區', '錯誤')
DCODE =形式。的GetValue( 'DCODE', '錯誤')

我讀文件/頁面到一個列表

fp = open('/home/dev/wsgi-scripts/newreg.py','r') 
lines = fp.readlines() 

,這樣我可以創建字典插入到MongoDB.eg。

info = {'state':州,'區':區,。 。 。 。 } { 鍵:值} [值意味着---這是從上述列表中的變量]

由於

,但我正在以下錯誤,當我做

print getattr(newreg, 'state') 

錯誤是

>>> print getattr(newreg, 'state') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in module 
AttributeError: 'module' object has no attribute 'state' 

我也試過

>>> print newreg.state 
Traceback (most recent call last): 
    File "<stdin>", line 1, in module 
AttributeError: 'module' object has no attribute 'state' 

這是我如何添加模塊

>>> import os,sys 
>>> sys.path.append('/home/dev/wsgi-scripts/') 
>>> import newreg 
>>> newreg_vars = dir(newreg) 
>>> print newreg_vars 
['Connection', 'Handler', '__builtins__', '__doc__', '__file__', '__name__', 
'__package__', 'application', 'cgi', 'datetime', 'os', 'sys', 'time'] 

處理程序在上面的列表是在以下

#!/usr/bin/env python 

import os, sys 
import cgi 
from pymongo import Connection 
import datetime 
import time 

class Handler: 
    def do(self, environ, start_response): 
    form = cgi.FieldStorage(fp=environ['wsgi.input'], 
          environ=environ) 

    state = form.getvalue('state','<font color="#FF0000">ERROR</font>') 
    district = form.getvalue('district','<font color="#FF0000">ERROR</font>') 
     dcode = form.getvalue('Dcode','<font color="#FF0000">ERROR</font>') 
+1

如果newreg.py定義了有效的Python變量,爲什麼不從newreg中導入它們,然後生成字典。 –

+0

你能更清楚地知道你想要什麼嗎?請輸入示例輸入和示例輸出。 – Wes

回答

1

一類我假設你想要的變量從一個Python模塊複製到另一個在運行時。

import newreg 
newreg_vars = dir(newreg) 
print newreg_vars 

將打印模塊「newreg」的所有屬性。

從模塊讀取的變量:

print getattr(newreg, 'state') 
print getattr(newreg, 'district') 
print getattr(newreg, 'dcode') 

,或者如果您知道屬性的名稱:

print newreg.state 
print newreg.district 
print newreg.dcode 

要更改屬性爲字符串,使用列表理解(或發電機):

newreg_strings = [str(item) for item in newreg_vars] 

這將爲您節省大量的工作,因爲您不必分析「新reg「作爲re的文本文件。作爲一個方面說明:類型轉換不是串聯的(儘管串聯可能涉及一些其他編程語言中的類型轉換)。