从php调用时,python输出不正确

时间:2016-04-08 03:39:51

标签: php python

我有以下python代码:

open_file=open("path to a file",'r')
from prettytable import PrettyTable
import csv
table1=PrettyTable(["COLUMN1","COLUMN2","COLUMN3"])
for lines in open_file:
    temp=(lines.split("%")[1])
    get_severity_no=temp.split(":")[0]
    Description=temp.split(":")[1]
    if "3" in get_severity_no:
        GET_DATE=lines.split(";")[0]
        table1.add_row([GET_DATE,get_severity_no,Description])
print(table1)

此代码将以表格格式打印所需的输出。示例输出如下所示:enter image description here

现在我从php调用这个脚本。 这是php代码。

<?php

$mystring = system('python get_files.py');
echo $mystring
?>

现在这是我得到的输出。

enter image description here

所有格式都已丢失。你可以告诉我应该怎样做才能做到这一点?我是php的新手,但对python很熟悉。

2 个答案:

答案 0 :(得分:1)

在输出周围使用pre标记,如下所示:

<br>

pre代表“预先格式化的文本”,预标记呈现“纯文本”完全输入的方式,广泛用于显示代码,命令输出和其他ASCII格式化表格和网页上的形状(如你的)。 Pre标签将新行视为<img>,保留重复空格(就像你在表中一样),处理&lt;和&gt;字面上而不是HTML标签,并使用固定宽度的字体。

您不希望始终使用oclib.h标记,因为其中的HTML标记(例如#ifndef oclib_h #define oclib_h #import <Foundation/Foundation.h> typedef enum {A, B, C} oc_enum_t; void useSwiftClassInC(); #endif /* oclib_h */ )甚至无法呈现。它会在输入时显示 字面 的任何文字。

希望这有帮助,

答案 1 :(得分:1)

控制台和浏览器实际格式化输出的方式不同。

控制台代表\n的新行,而浏览器需要正确的HTML标记<br>。 空间也一样。控制台将打印尽可能多的空格,但浏览器/ HTML会删除连续的空格(因此只剩下一个空格)。

因此,如果您希望输出完全相同,则需要将换行符从\n转换为<br> - 您可以使用nl2br功能。 关于空格,您可能希望将所有空格转换为不可破坏的空格,以告诉浏览器渲染连续的空格。您可以使用正则表达式执行此操作:preg_replace('/ /', '&nbsp;', $str);