用Python解析一个文件,把文件内容按行放到qtreewidget中,有层次的显示出来?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Python解析一个文件,把文件内容按行放到qtreewidget中,有层次的显示出来?相关的知识,希望对你有一定的参考价值。

此文件的扩展名任意,因为我可以修改,不过里面的内容如下所示,尖括号不需要,我只要这些公式,解析出来的并显示的情况可以参考下面这幅图的样子,求网友帮忙,非常感谢,我把我所有的金币都放出来,只为有一个结果< < I(d,s) = Id < Id = Ispec * (iff - ir) < Ispec = 2 * n * beta * VT * VT < n = 1.0 + GAMMA / (2.0*sqrt(PHI + VP + 4.0*VT)) < GAMMA=0.7 PHI=0.5 VP = VGprime - PHI - GAMMA * (sqrt(VGprime+(GAMMA/2.0)*(GAMMA/2.0))-(GAMMA/2.0)) /> /> /> />/>这种此次结构,展示在qtreewidget中,如图所示,不需要这些尖括号,只要这些公式即可,在pyqt+Python+Eric+pyside中都可以,非常感谢各位网友的帮忙,谢谢您们的热心帮助!
代码看的不行,截图给大家看,对不起啊

你的文件就只有
<
< I(d,s) = Id
<
Id = Ispec * (iff - ir)
<
Ispec = 2 * n * beta * VT * VT
<
n = 1.0 + GAMMA / (2.0*sqrt(PHI + VP + 4.0*VT))
<
GAMMA=0.7
PHI=0.5
VP = VGprime - PHI - GAMMA * (sqrt(VGprime+(GAMMA/2.0)*(GAMMA/2.0))-(GAMMA/2.0))
/>
/>
/>
/>
/>
那麼多内容吗?追问

不是,不过我要的是可以用代码识别出来,如果少的话,输入进去,就可以,没有必要复杂的编写代码,

代码很长,所以需要这样处理,否则人根本没这个时间和精力去做

谢谢您的回复,如果您有什么方法,希望您以代码的形式帮帮我,谢谢!

追答

能否提供一个完整的示例文档呢?
还有根节点怎么区分?

追问

根节点这些东西是不存在的,因为这不是一个完整的、规范的xml文件,当然我们可以保存为其他扩展名的文件,

源文件我给以地址吧:http://pan.baidu.com/s/1pLH6vd5

如果打不开,你给我一个邮箱,我给你发过去,谢谢您这么耐心给我解答

追答代码暂存
# -*- coding: utf-8 -*-
def read_file(fpath): 
   BLOCK_SIZE = 2048
   with open(fpath, 'rb') as f: 
       while True: 
           block = f.read(BLOCK_SIZE) 
           if block: 
               yield block 
           else: 
               return
strs = ''
for i in read_file(u'test.xml'):
 strs += i

import re
result = re.sub('\\t+<\\t*|\\t+/>\\t*','',strs)
item = 
i = 0
for s in result.split('\\r\\n'):
 if s!='':
  reg=re.compile("\\t")
  length=len(reg.findall(s))
  item[i] = [length,s.replace('\\t','')]
  #print s,length,i
  i+=1
print item

追问

热心的朋友,您好,你能把可直接运行的代码用.py文件发给我那个邮件回复

orz,谢谢您!

追答

是否这个效果?

追问

wow,是的,就是这个,大神,太好了,orz,求源文件赐教,谢谢谢谢谢谢谢谢~

给力给力

追答#下面代码是文件处理代码,item就是最终需要显示的数据,你自己想办法用item数据实现折叠的效果吧。如果你比较富裕,给我充点话费什么的可以帮你用 Python3.4 的 tkinter 实现。
# -*- coding: utf-8 -*-
import re 
def read_file(fpath): 
   BLOCK_SIZE = 2048
   with open(fpath, 'rb') as f: 
       while True: 
           block = f.read(BLOCK_SIZE) 
           if block: 
               yield block 
           else: 
               return
strs = ''
for i in read_file(u'test.xml'):
 strs += i
 
result = re.sub('\\t+<\\t*|\\t+/>\\t*','',strs)
item = 
i = 0
for s in result.split('\\r\\n'):
 if s!='':
  reg=re.compile("\\t")
  length=len(reg.findall(s))
  item[i] = [length,s.replace('\\t','')]
  #print s,length,i
  i+=1
print item

追问

恩,这个好说,我们邮件里面聊吧

追答

看私信

参考技术A 恩,我也遇到过,求各位网友集思广益把,谢谢您们哦追问

如果您最近知道了答案,请您也回复一下我,谢谢您哦!

qt 读取一个txt文件,把里面的内容已二进制的方式存储到另一个文件里面。

读取一个txt文件,把里面的内容已二进制的方式存储到另一个文件里面。这另一个文件还得是.pcp格式的。思路我都有,但是我就是想有个代码,看看。我该怎么写。

你用的是C呀。用Qt的话,我有段代码可以给你参考下。
//写二进制数据
QFile dataFile(info_file_name);
if(!dataFile.open(QIODevice::WriteOnly))
return -1;

QDataStream out(&dataFile);
out.setVersion(QDataStream::Qt_4_4);
out.setByteOrder(QDataStream::LittleEndian); //编码方式:低字节在前
for(int i=0;i<command_datas.count();i++)

out<<……;

dataFile.close();
//读txt数据
QFile infoFile(info_file_name);
if(!infoFile.open(QIODevice::ReadOnly))
return -1;

QTextStreamin(&infoFile);
while(!infoFile.atEnd())
in>>……

infoFile.close();追问

out 和in的地方没有懂。。

追答

>>输入和>
当然,名字你随便取,就是读入和读出数据。
比如:
QFile file(filename);
file.open(QIODevice::ReadOnly);

QTextStream read(&file); //输入流对象 read
QListstr;
while(!file.atEnd())
QString s;
read>>s; //读入数据
str.append(s);

file.close();

参考技术A 美美妈妈妈妈妈妈妈妈妈妈密密麻麻

以上是关于用Python解析一个文件,把文件内容按行放到qtreewidget中,有层次的显示出来?的主要内容,如果未能解决你的问题,请参考以下文章

利用python脚本把多个文件内容放到一个文件内

python读取文件,换行问题

python按行读取文件,如何去掉换行符"\n

python中read() ,readline()以及readlines()区别

Python 拿来直接用的7个os读写文件的操作!网友:建议收藏!

python按行读取文件,如何去掉换行符"\\n