找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4013|回复: 6

[求助] 读取这种格式

4

主题

8

帖子

8

积分

贫民

积分
8
竹韵飘香 发表于 2017-3-31 16:11:32 | 显示全部楼层 |阅读模式
ITEM: TIMESTEP
50000
ITEM: NUMBER OF ATOMS
10
ITEM: BOX BOUNDS pp pp pp
5.4707499220706715e+01 1.3968300077929459e+02
8.5261969777867606e+01 1.7334823022213180e+02
-7.9500500000000000e+02 7.9500500000000000e+02
ITEM: ATOMS id type xs ys zs
1 2 0.1708 0.228182 0.310668
2 2 0.167036 0.235251 0.308524
3 2 0.149806 0.233318 0.306623
4 2 0.160338 0.239989 0.304289
5 2 0.160683 0.253364 0.302185
6 2 0.139504 0.271516 0.300311
7 2 0.150571 0.287643 0.298269
8 2 0.152145 0.303647 0.296086
9 2 0.159291 0.311904 0.293852
10 2 0.166106 0.344719 0.292343
ITEM: TIMESTEP
50000
ITEM: NUMBER OF ATOMS
10
ITEM: BOX BOUNDS pp pp pp
5.4707499220706715e+01 1.3968300077929459e+02
8.5261969777867606e+01 1.7334823022213180e+02
-7.9500500000000000e+02 7.9500500000000000e+02
ITEM: ATOMS id type xs ys zs
1 2 0.1708 0.228182 0.310668
2 2 0.167036 0.235251 0.308524
3 2 0.149806 0.233318 0.306623
4 2 0.160338 0.239989 0.304289
5 2 0.160683 0.253364 0.302185
6 2 0.139504 0.271516 0.300311
7 2 0.150571 0.287643 0.298269
8 2 0.152145 0.303647 0.296086
9 2 0.159291 0.311904 0.293852
10 2 0.166106 0.344719 0.292343
ITEM: TIMESTEP
50000
ITEM: NUMBER OF ATOMS
10
ITEM: BOX BOUNDS pp pp pp
5.4707499220706715e+01 1.3968300077929459e+02
8.5261969777867606e+01 1.7334823022213180e+02
-7.9500500000000000e+02 7.9500500000000000e+02
ITEM: ATOMS id type xs ys zs
1 2 0.1708 0.228182 0.310668
2 2 0.167036 0.235251 0.308524
3 2 0.149806 0.233318 0.306623
4 2 0.160338 0.239989 0.304289
5 2 0.160683 0.253364 0.302185
6 2 0.139504 0.271516 0.300311
7 2 0.150571 0.287643 0.298269
8 2 0.152145 0.303647 0.296086
9 2 0.159291 0.311904 0.293852
10 2 0.166106 0.344719 0.292343
连续读取下列这种形式的数据:


ITEM: TIMESTEP
50000
ITEM: NUMBER OF ATOMS
10
ITEM: BOX BOUNDS pp pp pp
5.4707499220706715e+01 1.3968300077929459e+02
8.5261969777867606e+01 1.7334823022213180e+02
-7.9500500000000000e+02 7.9500500000000000e+02
ITEM: ATOMS id type xs ys zs
1 2 0.1708 0.228182 0.310668
2 2 0.167036 0.235251 0.308524
3 2 0.149806 0.233318 0.306623
4 2 0.160338 0.239989 0.304289
5 2 0.160683 0.253364 0.302185
6 2 0.139504 0.271516 0.300311
7 2 0.150571 0.287643 0.298269
8 2 0.152145 0.303647 0.296086
9 2 0.159291 0.311904 0.293852
10 2 0.166106 0.344719 0.292343

回复

使用道具 举报

0

主题

27

帖子

27

积分

贫民

积分
27
maximal_ideal 发表于 2017-3-31 22:49:30 | 显示全部楼层
从文件中读取吗? 在file类中洗个方法读被 用字典存储啊?  
回复 支持 反对

使用道具 举报

4

主题

8

帖子

8

积分

贫民

积分
8
竹韵飘香  楼主| 发表于 2017-4-1 16:52:44 | 显示全部楼层
maximal_ideal 发表于 2017-3-31 22:49
从文件中读取吗? 在file类中洗个方法读被 用字典存储啊?

主要是下列这一块的数据是不需要。
ITEM: TIMESTEP
50000
ITEM: NUMBER OF ATOMS
10
ITEM: BOX BOUNDS pp pp pp
5.4707499220706715e+01 1.3968300077929459e+02
8.5261969777867606e+01 1.7334823022213180e+02
-7.9500500000000000e+02 7.9500500000000000e+02
ITEM: ATOMS id type xs ys zs
回复 支持 反对

使用道具 举报

3

主题

24

帖子

24

积分

贫民

积分
24
ccwybatn 发表于 2017-4-5 17:29:05 | 显示全部楼层
不太明白你的意思
回复 支持 反对

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
ben7980 发表于 2017-4-7 14:56:34 | 显示全部楼层
需要的部分就不读取,简单的就来个循环就可以解决读取问题了,至于你想怎么存,这个应该不难,关键还看你要怎么用
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
akbdsl 发表于 2017-4-8 16:08:02 | 显示全部楼层
  1. #coding=utf-8

  2. import re

  3. def seek(pattern, data):
  4.     """数据格式有点类似,‘abaabcabmn’,以‘ab’为格式头,在这是pattern,
  5.     内容为‘a, c, mn’
  6.     """
  7.     # 用来处理换行
  8.     pattern = pattern.replace('\n', ' ')
  9.     data = data.replace('\n', ' ')
  10.    
  11.     # 把所有格式头均寻找出来
  12.     match = re.finditer(pattern,data, re.S)
  13.     # 存放所有的格式头索引
  14.     head_index = []
  15.     for m in match:
  16.         head_index.append(m.start())

  17.     # 格式头+格式头长度为内容开始,到一下个的格式头为结束
  18.     content = []
  19.     head_len = len(pattern.replace('\\', ''))  # 注意在pattern为正则时,\为
  20.                                                #    转义;但在len里,却为算是一
  21.                                                #    个长度
  22.     # 抠取内容
  23.     i = 0
  24.     while i < (len(head_index) - 1):
  25.         content.append(data[(head_index[i]+head_len) : (head_index[i+1])])
  26.         i += 1
  27.     content.append(data[(head_index[i]+head_len) : ])  # 结尾的抠取

  28.     return content
  29.    


  30. file = open('temp.txt', 'r').read()
  31. pattern = r"""ITEM: TIMESTEP
  32. 50000
  33. ITEM: NUMBER OF ATOMS
  34. 10
  35. ITEM: BOX BOUNDS pp pp pp
  36. 5\.4707499220706715e\+01 1\.3968300077929459e\+02
  37. 8\.5261969777867606e\+01 1\.7334823022213180e\+02
  38. -7\.9500500000000000e\+02 7\.9500500000000000e\+02
  39. ITEM: ATOMS id type xs ys zs
  40. """

  41. print seek(pattern, file)
复制代码
回复 支持 反对

使用道具 举报

4

主题

8

帖子

8

积分

贫民

积分
8
竹韵飘香  楼主| 发表于 2017-4-16 15:58:26 | 显示全部楼层

感谢!还有一个小问题:TEM: TIMESTEP下面的这个数如果是不同的,但是有规律的话,比如是5000的倍数,那么该这么改呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表