在文本文件中搜索数据以进行输出并转换为表格数据帧

时间:2017-08-25 04:33:59

标签: python html django pandas

如果我在阅读问题时遇到任何错误,请高级抱歉: 我正在为我的网站使用Django和python。

我需要读取用户输入的进程以搜索我想要读取的目录文件,这是我输入2,input1和input2。

如果关键字匹配,我在变量中设置关键字我将打印下一行。

这是我的文字文件

  

delay_index_time 775435 delay_index_time 456345 delay_index_time 4567867867868 delay_index_time 567867

在views.py中的Python代码

def SearchBox(request):
    fullpath = ""
    input1= request.GET.get('input1')
    input2= request.GET.get('input2')
    input_combine = str(input1).upper() + "_" + str(input2)
    summary = '1A'
    search_string = 'delay_index_time'

    if input_Lot is None:
        return render(request, 'Output.html')

    else:

        path = "D:/file/" + str(input_combine) + "/" + summary
        with open(path) as input_data:
            for line in input_data:
                if search_string in line:

                    context = {

                         "output": (next(input_data))

                    }

                    return render(request, 'Output.html', context)

模板HTML

  <form id = "lol" class="navbar-form navbar-left" role="search" method="GET" action="">

   <div class="input-group">
      <input style="left:260px; width:250px; top:-80px;" id="box1" name="input1" type="text" class="form-control" placeholder="Lot">
    <input style="left:270px; top:-80px; width:250px;" id="box2" name="input2" type="text" class="form-control" placeholder="Operation">



    <div  style="left:540px; top:-101px;" class="input-group-btn">
      <a href="{% url 'Output' %}"><button id = "search_sub" value="Search" class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button></a>
    </div>
  </div>
</form>

{{ output|safe }}
{% endblock %}

我的问题是它只打印输出的第一行:

  

775435

但是其他3个输出没有显示。

  

456345

     

4567867867868

     

567867

额外问题

如果我希望在我的网站上的一列中以表格形式显示输出。

                                     NEW QUESTION
  

这是我的文本文件中的数据。

  1. 我会在找到&#39; id _&#39;后显示字符串。这是id用户。
  2. 在一列中显示id用户。
  3. 然后,在id用户下得到delay_index_time,我将显示输出的下一行。
  4. 但有时delay_index结果会产生多个结果。
  5. 我将拉链/合并在一个表格中,列为2列。
  6. 将使用复选框选择显示。如果让我们说用户只想查看用户ID,它只会显示该用户ID。如果用户在复选框中勾选它们,它将在表格中显示它们。
  7. 对于复选框,我不知道。对不起,如果我问了很多问题:(

    id_A1
    delay_index_time
    s_7754
    s_7731
    id_A2
    delay_index_time
    mrs_7745
    id_A3
    delay_index_time
    s_77789
    id_A4
    delay_index_time
    s_7752
    
  8.   

    这是我在views.py

    中的编码
        context = {}
        with open(path) as input_data:
            for line in input_data:
                if line.startswith('id_'):
                    if 'output' in context:
                        context['output'].append(line.lstrip('id_').rstrip())
    
                if search_string in line:
                    if 'output1' in context:
                        context['output1'].append(next(input_data).lstrip('s_').rstrip())
    
                context = {
    
                    'output': [(line.lstrip('id_').rstrip())],
                    'output1': [(next(input_data).lstrip('s_').rstrip())]
    
                }
    
              return render(request, 'Output.html', context)
    
      

    这是我的模板

    <div  class="container" style=" width:170px;">
    
    
        <table style="" class="table table-bordered">
    
            <thead class="success" >
    
            <th class="active"><b>Visual ID</b></th>
    
            {% for line in output1 %}
             <tr  class="success">
    
                <td>{{ line }}</td>
    
            </tr>
            {% endfor %}
    
            </thead>
    
             <thead class="success" >
    
            <th class="active"><b>Time Delay</b></th>
    
            {% for line in output %}
             <tr  class="success">
    
                <td>{{ line }}</td>
    
            </tr>
            {% endfor %}
    
            </thead>
    
    
        </table>
    

    views.py Templates

1 个答案:

答案 0 :(得分:0)

试试这个,它对我有用。

context = {}
with open(path) as input_data:
    for line in input_data:
        if search_string in line:
            if 'output' in context:
                context['output'].append(next(input_data))
            else:
                context = {'output': [(next(input_data))]}
    return render(request, 'Output.html', context)

以表格形式显示输出。

<table>
  <tr>
    <th>Output</th>
  </tr>
  {% for line in output %}
      <tr>
         <td>{{ line }}</td>
     </tr>
  {% endfor %}
</table>