trsd_extract_EDSD_new
# -*- coding:utf-8 -*-
import re '''
适应新版本
''' year='17A'#用户自定义
ss='./data/'#根目录
filename = ss+'EDSD%s.txt'%year#输入文件名 def trsd_nonote(): p1 = r"^\s{4}(?:X|\W)\s{2}([A-Z]{3})\s\s.+\n"#TCC
p2 = r"\s{4}(?:X|\W)\s{2}[A-Z]{3}\s\s(.+)\n"
"""
Function: To specify information regarding the transport
such as mode of transport, means of transport,
its conveyance reference number and the
identification of the means of transport.
"""
p3 = r"^\s{7}Function:\s(.+\w\w\.)\n"
p4 = r"^\s{7}Function:\s(.+\.g\.|.+[^\.])\n"
# p4 = r"^\s{7}Function:\s(.+[\.g\.|[^\.]])\n"
p5 = r"^\s{17}(\w.+[^\.])\n"
p6 = r"^\s{17}(.+\.)\n" #Note
# p7 = r"^\s{7}Note:\s\n"#Note
# p8= r"^\s{12}([A-Z].+\.)\n"#Note内容只有1行
# p9 = r"^\s{12}(.+[^\.]|)\n"#Note内容只多行的非最后行
# p10 = r"^\s{12}(.+\.)\n"#Note内容只多行的最后行 pattern1 = re.compile(p1)
pattern2 = re.compile(p2)
pattern3 = re.compile(p3)
pattern4 = re.compile(p4)
pattern5 = re.compile(p5)
pattern6 = re.compile(p6)
fr = open(filename)
# temp = "";
flag = 0
for line in fr.readlines():
matcher1 = re.findall(pattern1,line)
matcher2 = re.findall(pattern2,line)
matcher3 = re.findall(pattern3,line)
matcher4 = re.findall(pattern4,line)
matcher5 = re.findall(pattern5,line)
matcher6 = re.findall(pattern6,line)
#print matcher
w2 = open(ss+'trsd_nonote%s.txt'%year,'a')#a代表追加 w代表重写
if matcher1:
flag = 1
w2.write("\n")
for j in matcher1:
# for k in j:
w2.write(j)
if ((matcher2!=[])and(flag ==1)):
flag = 2
w2.write(",")
for j in matcher2:
# for k in j:
w2.write(j)
if ((matcher3!=[])and(flag ==2)):
flag = 3
#防止有逗号,用双引号括起
w2.write(",\"")
for j in matcher3:
# for k in j:
w2.write(j)
w2.write("\"")
if ((matcher4!=[])and(flag ==2)):
flag = 4
w2.write(",\"")
for j in matcher4:
# for k in j:
w2.write(j)
if ((matcher5!=[])and(flag ==4 or 5)):
flag = 5
w2.write(" ")
for j in matcher5:
# for k in j:
w2.write(j)
# w2.write("\"")
if ((matcher6!=[])and(flag ==4 or flag==5)):
flag = 6
w2.write(" ")
for j in matcher6:
# for k in j:
w2.write(j)
w2.write("\"")
w2.close( ) def trsd_note(): p1 = r"^(?:\s{7}|X\s{6}|\W\s{6})([A-Z]{3})\s\s[A-Z].+$"#匹配1001
p2 = r"^\s{7}Note:\s\n"#Note
p3= r"^\s{12}([^ ].+)\n"#Note内容
p4= r"^(?:-|컴)+\n"
pattern1 = re.compile(p1)
pattern2 = re.compile(p2)
pattern3 = re.compile(p3)
pattern4 = re.compile(p4) fr = open(filename)
w2 = open(ss+'trsd_note%s.txt'%year,'a')#a代表追加 w代表重写
# temp = ();
flag = 0
flag1=0
for line in fr.readlines():
matcher1 = re.findall(pattern1,line)
matcher2 = re.findall(pattern2,line)
matcher3 = re.findall(pattern3,line)
matcher4 = re.findall(pattern4,line) #print matcher if matcher1!=[]:
flag = 1
w2.write("\n")
# for j in matcher1: # w2.write(j) if ((matcher2!=[])and(flag == 1)):
flag = 2
flag1=1
# w2.write(",")
if flag1==1:
if ((matcher3!=[])and(flag ==2 or 3)):
flag = 3
w2.write(" ")
for j in matcher3: w2.write(j)
# w2.write(")
if ((matcher4!=[])and(flag == 3)):
flag=0
flag1=0
w2.write("\n")
w2.close( )
fr.close() def join(): f1= open(ss+'trsd_note%s.txt'%year)
f2 =open(ss+'trsd_nonote%s.txt'%year) list_note=[]
for line1 in f1:
# print(line1)
if line1.isspace():
list_note.append('')
else:
list_note.append(line1) f1.close() # print(list_note)
f2_w= open(ss+'trsd%s.csv'%year,'a')
# for i in range(len(list_note)):
i=0
# f2_r = open(ss+'/new/%s_w.txt'%list_tag[i])
for line2 in f2: str11="%s,\"%s\"\n"%(line2.strip('\n'),list_note[i].strip('\n'))
i=i+1
# print(i)
# print(str11)
f2_w.write(str11) f2_w.close()
f2.close()
if __name__ == '__main__':
trsd_nonote()
trsd_note()
join()
trsd_extract_EDSD_new的更多相关文章
随机推荐
- 从底层谈WebGIS 原理设计与实现(六):WebGIS中地图瓦片在Canvas上的拼接显示原理
从底层谈WebGIS 原理设计与实现(六):WebGIS中地图瓦片在Canvas上的拼接显示原理 作者:naaoveGI… 文章来源:naaoveGIS 点击数:1145 更新时间: ...
- devel包
devel 包主要是供开发用,至少包括以下2个东西:1. 头文件2. 链接库有的还含有开发文档或演示代码. 以 glib 和 glib-devel 为例: 如果你安装基于 glib 开发的程序,只需要 ...
- Haskell语言学习笔记(26)Identity, IdentityT
Identity Monad newtype Identity a = Identity { runIdentity :: a } instance Functor Identity where fm ...
- hadoop 链接 mysql
数据在hadoop服务器上,需要导入mysql 可以直接在hadoop上操作 要知道 mysql的 账号 密码 host 步骤: 进入shell 输入: mysql -u 'name' -p'pas ...
- Containerpilot 配置文件示例
{ consul: "localhost:8500", logging: { level: "INFO", format: "default" ...
- 在制MO未取到FP2
描述:工单被过滤掉 IN_SFCHEADER表数据被删除掉 备份表监控可见数据是有写入IN_SFCHEADER表 删除前会将数据写入IN_SFCHEADER_TEMP表,发现物料编码是带了一个尾续CZ ...
- springboot+cxf 开发webservice
参考 https://www.cnblogs.com/fuxin41/p/6289162.html pom.xml <?xml version="1.0" encoding= ...
- svn搭建相关
转载至:http://blog.163.com/longsu2010@yeah/blog/static/173612348201202114212933/ 安装步骤如下: 1.yum install ...
- LuoguP1126 机器人搬重物(BFS)
题目链接:https://www.luogu.org/problemnew/show/P1126 思路:很不错的搜索题,用BFS,虐了我1天多才A掉 QAQ,细节很多. 1.每个状态包含行.列.方向. ...
- TensorFlow—多层感知器—MNIST手写数字识别
1 import tensorflow as tf import tensorflow.examples.tutorials.mnist.input_data as input_data import ...