# -*- 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()

最新文章

  1. sqlServer、MySql批量操作插件
  2. bool型变量下标的时候javascript是不能允许的
  3. jQuery 自带的动画效果
  4. 如何给Ubuntu12.10 安装Vmware Tools
  5. C++_系列自学课程_第_4_课_string_《C++ Primer 第四版》
  6. devstack meaning of: n-cond, n-novnc and n-xvnc
  7. SQL Server 中字符串中包含字符串变量的表示方法
  8. SqlServer高版本数据本分还原到低版本方法
  9. ToString() 格式化字符串
  10. Jmeter:图形界面压力测试工具
  11. Java版权信息之Jautodoc
  12. 使用Map标签指定点击区域时的兼容性问题
  13. 上传文件报错--Unable to find 'struts.multipart.saveDir' property setting.
  14. 基于Consul的数据库高可用架构
  15. 将HTML页面自动保存为PDF文件并上传的两种方式(一)-前端(react)方式
  16. win7下安装mongodb
  17. linux环境中,多个命令之间,通过&& ||执行,命令之间执行的逻辑是什么?
  18. 日志审计系统、事件日志审计、syslog审计
  19. haproxy 作为反向代理被攻击
  20. JUC学习记录

热门文章

  1. Java并发知识(1)
  2. 编写jQuery插件(二)——jQuery插件类型和机制
  3. Axure8 实现移动端页面上下滑动效果
  4. MPP、SMP、NUMA概念介绍
  5. sqlserver table partion
  6. RESTORE 无法处理数据库 'Students',因为它正由此会话使用。建议在执行此操作时使用 master 数据库。
  7. Andriod Studio adb 安装应用
  8. org.apache.cxf.interceptor.Fault: Unmarshalling Error: 意外的元素 (uri:"", local:"mixornot")。
  9. Codeforces Round #535 (Div. 3)
  10. 【校招面试 之 剑指offer】第11题 旋转数组中的最小数字