精华内容
下载资源
问答
  • 2.将xml添加缩进,使用print能正确打印添加缩进后的字符串。 思路: 采用正则表达式来判断xml字符串的类型: 1.文件头 2.判断元素的种类:带属性的标签,没有属性的标签,标签内结束的标签,只含有文本的...

    功能:

    1.将xml中多余的空格,换行符去掉,让xml字符串变成一行。

    2.将xml中添加缩进,使用print能正确打印添加缩进后的字符串。

    思路:

    采用正则表达式来判断xml中字符串的类型:

    1.文件头

    2.判断元素的种类:带有属性的标签,没有属性的标签,标签内结束的标签,只含有文本的标签,不含有文本的标签。

    3.根据标签的级别添加换行符后面的空格

    '\n'+i*'    '

     已经完成,使用python与正则表达式。

    import re
    def getData(file_name):
        path="D:\\Python\\xml\\"+file_name+".txt"
        str=''
        with open(path,'r',encoding='utf-8') as f:
            for line in f.readlines():
                str=str+line
        return str.strip()
    
    def getSpace(level):
        space='\n'
        for i in range(level):
            space=space+'    '
        return space
    
    def printXml(xml_str):
        
        #xml_list=xml_str.split('([>])')
        new_xml_list=""
        head=xml_str[0:9]
        xml_str=xml_str[9:]
        xml_list=re.split(r'([>])',xml_str)
        xml_list = ["".join(i) for i in zip(xml_list[0::2],xml_list[1::2])]
        level=0
        for node in xml_list:
            if(re.match(r'<\?xml .*version.*\?>',node)):
                new_xml_list=new_xml_list+new_xml_list+node
                continue
            elif(re.match(r'<[^\?^/].*[^/]>',node)):
                new_xml_list=new_xml_list+getSpace(level)+node
                level=level+1
                continue
            elif(re.match(r'</.*[^/]>',node)):
                level=level-1
                new_xml_list=new_xml_list+getSpace(level)+node
                continue
            elif(re.match(r'<[^/].*/>',node)):
                new_xml_list=new_xml_list+getSpace(level)+node
            elif(re.match(r'.+</.*[^/]>',node)):
                new_xml_list=new_xml_list+node
                level=level-1
            else:
                print(node)
    
        print(new_xml_list)
    
    
    
    def main():
        xml_str=getData('1000')
        printXml(xml_str)
    
    
    main()

     

    转载于:https://www.cnblogs.com/kgtone/p/9601918.html

    展开全文
  • 上面这首古诗,保存在一个文本文件中没有分段,也没有标点。现在希望输出为下图所示样子,每2句一个段落,并且用逗号和句号进行分隔,该如何完成呢?方法是首先将文档内容读入,此时是作为一个字符串来处理,使....

    很多同学在学习了Python最基本的一些语法,比如程序控制语句,各种数据容器之后,会有疑惑,这些究竟怎么应用? 我们今天就以诗歌排版为例,看看最基本的Python的知识,如何发挥巨大的威力!

    51dfdc7fc82115754bece28af6d58b1d.png

    上面这首古诗,保存在一个文本文件中,没有分段,也没有标点。现在希望输出为下图所示的样子,每2句一个段落,并且用逗号和句号进行分隔,该如何完成呢?

    bd1bdfae9ad2b890829327919cbd6697.png

    方法是首先将文档内容读入,此时是作为一个字符串来处理,使用for遍历字符串,并用print(),打印每个字符,如果字符的排位是14的倍数,则以句号和回车符结束,如果是7的倍数,则以逗号结束,其他的情况,末尾不添加字符,代码如下(已经将python文件和要处理的文本文件置于同一个文件夹中):

    with open('和子由渑池怀旧.txt',encoding='utf8') as poem:   cotent=poem.read()   for i in range(len(cotent)):      if (i+1) % 14 ==0:         print(cotent[i],end='。\n')      elif (i+1) % 7 ==0:         print(cotent[i],end=',')      else:         print(cotent[i],end='')

    其中i为诗中每个字符的下标,范围为从0到55,i+1就是该字在诗中的排位,如果排位为14或7的倍数,就应用相应的结束标记。另外需要注意,文字的编码需要使用utf8,这样才能正确打开,运行代码,就得到了想要的结果。

    可能有的同学会说,其实要达到上面的目标,在Word中也不复杂,可如果我们的诗歌不是七律,而是“长恨歌”呢?
    with open('长恨歌.txt',encoding='utf8'as poem:   cotent=poem.read()   for i in range(len(cotent)):      if (i+1) % 14 ==0:         print(cotent[i],end='。\n')      elif (i+1) % 7 ==0:         print(cotent[i],end=',')      else:         print(cotent[i],end='')
    只需要将上述代码中的文件名改为“长恨歌”就行了。运行的结果如下图(内容太长,截取片段):73d53a9bad7dafa452e7034f0ac5351a.png

    通过上面的例子,大家是不是更能体会不同工具该在何种情境下使用?有兴趣的同学也可以想一下,如何从右到左竖行排版?

    学习Python,并通过微软MTA-Pyhton 和ICTP-Python国际认证,请关注:0187bc0cf74a51be6be206b7f0025cc7.png         d7c7f0e6d1bb045fcf12b793c8eb81a8.png
    
    	
    展开全文
  • 首先在一个文本文件中写入一些电话号码,为了读取方便,指定它们固定格式,并且以dollar串结束符结束,便于用3FH号功能读取文件和09H号功能输出。 注意,虽然3FH号功能读入东西,在输出时到串结束符就...

    首先在一个文本文件中写入一些电话号码,为了读取的方便,指定它们有固定的格式,并且以dollar串结束符结束,便于用3FH号功能读取文件和09H号功能输出。
    这里写图片描述
    注意,虽然3FH号功能读入的东西,在输出时到串结束符就没有了,这只是因为09H号功能的结束时在串结束符dollar符,在3FH号功能的使用时还是要决策好要读入的字符数目。
    另外两个新的知识是,3DH号功能打开文件,以及用42H号功能移动文件指针(有至少三种移动方式,根据AL的值来指定)。

    DATAS SEGMENT
        WJ DB 'D:\tel.txt',00H  ;文件路径
        HAND DW ?               ;文件代号
        LS2 DB 20 DUP(?),'$'   ;小临时空间
        NAMEN DB 7              ;表示最多存7个字符
             DB ?               ;预留!保存实际存的字符数
             DB 6 DUP (?)       ;接收输入串
             DB '$','$'         ;这里完全是我的无能之举!
        NOSTR DB 'NOT FIND','$'    ;找不到
        PIAN DW 00H             ;偏移量
        TELNUM DB 4             ;电话号码数量
        HH DB 0AH,0DH,'$'      ;换行回车
    DATAS ENDS
    
    CODES SEGMENT
        ASSUME CS:CODES,DS:DATAS
    START:
        MOV AX,DATAS
        MOV DS,AX
        ;--------输入名字----------
        LEA DX,NAMEN
        MOV AH,0AH  ;0A号功能接受输入到缓冲区
        ;DS:DX=缓冲区首地址
        ;(DS:DX)保存缓冲区最大字符数
        ;(DS:DX+1)保存实际输入字符数
        INT 21H
    
        LEA DX,HH
        MOV AH,09H
        INT 21H
    
        MOV BH,0
        MOV BL,DS:NAMEN[1]      ;int i=名字的字符数
        BUQUAN:                 ;补全
            MOV DL,'-'          ;补全用的字符
            MOV DS:NAMEN[BX+2],DL   ;从+2位置开始字符补全
            ADD BX,1            ;游标+1右移
            CMP BX,7            ;到7说明结束了
            JB BUQUAN           ;不到7要继续补全
    
        LEA DX,NAMEN[2]
        MOV AH,09H
        INT 21H
    
        ;换行
        LEA DX,HH
        MOV AH,09H
        INT 21H
    
        ;-------打开文件-----------
        MOV AH,3DH      ;打开文件的操作
        MOV AL,00       ;只读
        LEA DX,WJ       ;把文件路径的地址给DX
        INT 21H         ;干活
        JC ERROR        ;出错跳转
        ;执行到这里后,文件代号将在AX里
        MOV HAND,AX     ;存进HAND里
    
        MYXUN:  ;主循环
            ;-------移动文件指针-------
            MOV AH,42H      ;移动文件指针
            MOV CX,0
            MOV DX,PIAN     ;CX:DX是偏移量
            ADD PIAN,22     ;偏移量每次加22(算上回车换行!)
            MOV AL,0        ;移动方式:从头开始算
            MOV BX,HAND     ;文件代号给BX
            INT 21H
            ;---------读取-------------
            MOV AH,3FH      ;读文件的操作
            MOV BX,HAND     ;文件代号给BX
            MOV CX,20       ;要读的长度给CX,注意要正好!
            LEA DX,LS2      ;要读到的位置给DX
            INT 21H
            JC ERROR        ;错误跳转
            ;执行好读后,实际读的字节数在AX里
    
            ;---------比较名字---------
            MOV BX,0        ;比较用的游标初始化
            MOV CX,7        ;比较7个字符
            CMPNAME:
                MOV DL,DS:LS2[12+BX]
                CMP DS:NAMEN[BX+2],DL   ;逐个字符作比较
                JNE THISNO      ;不同时跳转
                INC BX          ;游标增加
            LOOP CMPNAME        ;相同时继续循环比较
            ;如果运行到这句,说明比较结果是一致
            JMP SHUCHU          ;一致则跳转到输出结束
            THISNO:             ;到这里说明本次比较是不一致的
                DEC TELNUM      ;每次TELNUM-1
                CMP TELNUM,0    ;和0比较一下
                JE NONE         ;到0了说明没找到
                JMP MYXUN       ;否则继续主循环
    
        SHUCHU:
            ;---------输出-------------
            LEA DX,HH
            MOV AH,09H
            INT 21H
            LEA DX,LS2      ;串地址给DX
            MOV AH,09H      ;显示字符串的操作
            INT 21H
        ERROR:          ;直接结束
            MOV AH,4CH
            INT 21H
        NONE:           ;没找到
            LEA DX,HH
            MOV AH,09H
            INT 21H
    
            LEA DX,NOSTR
            MOV AH,09H
            INT 21H
    
            INT 21H
            JMP ERROR
    CODES ENDS
        END START

    在读入名字后,用减号对名字进行补全,补全到7位,这样就可以和文件中的记录保持格式上的一致性,并且每次只要把CX置7(补全之后总是7位的名字),就能很方便地一位一位地作字符比较。
    这样做的另一个好处是,如果一个名字是另一个名字的前缀串,如TOM于TOMMY是前缀串,也不会发生错误。例如在这个文件中TOM是TOMMY的前缀串,甚至还在TOMMY的前面,仍然能判断两者并不相同,而只作名字长度的循环是不能避免这个问题的。
    这里写图片描述
    这里写图片描述

    展开全文
  • 串会被当作一个文件中的一个单一输入行。 最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将 括号之间的 filenameset 变成一个反括字符串。该字符串会 被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进...
  • 13.第十三章 文件.txt

    2019-11-08 16:33:27
    对数据的管理无论是用数组还是链表,都是存储在内存中的,程序结束后都会丢失,下一次运行程序时,要重新输入或运算生成数据。要把程序运行的数据保存起来以便下次运行继续使用,在计算机中持久保存数据的方式是...
  • cookie 设置或获取 cookie 的字符串值。 defaultCharset 从当前的区域语言获取默认字符集。 designMode 设置或获取表明文档是否可被编辑的值。 dir 设置或获取表明对象的阅读顺序的值。 doctype 获取与当前...
  • 22. 匹配由26个英文字母的大写组成的字符串 23 匹配由26个英文字母的小写组成的字符串 24 匹配由数字和26个英文字母组成的字符串; 25 匹配由数字、26个英文字母或者下划线组成的字符串; java源码: /* * Created ...
  • 注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $second = "World"; $full1 = "$first $second"; # ...
  • 如果为此参数指定了一个值, 则该值将覆盖 make 文件中的默认值。 值范围: C 编译程序的完整路径。 默认值: 无 remote_dependencies_mode: 说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果...
  • 程序第25行至28行用循环语句逐个读出文件1中的字符再送到文件2中。再次运行时,给出了一个文件名(由例10.2所建立的文件), 故输出给标准输出文件stdout,即在显示器上显示文件内容。第三次运行,给出了二个文件名,...
  • 读取字符串数组中的字符串 274 9-3 字符串处理 275 字符串长度 275 显示字符串 277 数字字符的出现次数 278 大小写字符转换 279 字符串数组的参数传递 280 总结 283 第10章 指针 285 10-1 指针 286 函数的...
  • 字符串高级简单回顾..eval与exec简介字符串的简单规范字符串的截取字符串赋值规范字符串转义字符字符串常见运算符字符串格式化字符串格式化强化字符串编码简介dir与help查看str字符串函数第一个大写以及字符串居中...
  • 和通配类似,正则表达式也是用来进行文本匹配工具,只不过比起通配符,它能更精确地描述你需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一...
  • 序并没有结束,我们可以打开windows 任务管理器,可以看到我们程序仍在执 行。 因为return a.exec();一句表示只要主窗口界面不退出,那么程 序就会一直执行。所以只有用第一种方法,将该语句也放到if 语句,而在...
  • 正则表达式

    2014-12-03 14:51:39
    所有包含子串 "java" 的字符串相匹配.虽然正则表达式中的其它字符不是按照字面意思进行匹配的,但它们都具有特殊的意义.正则表达式 /s$/ 包含两个字符. 第一个特殊字符 "s" 是按照字面意思与自身相匹配.第二个字符 ...
  • CruiseYoung提供详细书签电子书籍目录 ... 12.6 从文本文件中读入字符串 471 12.7 格式化文件输入输出 474 12.7.1 格式化文件输出 474 12.7.2 格式化文件输入 475 12.8 错误处理 477 12.9 ...
  • 12.6 从文本文件中读入字符串 471 12.7 格式化文件输入输出 474 12.7.1 格式化文件输出 474 12.7.2 格式化文件输入 475 12.8 错误处理 477 12.9 再探文本文件操作模式 478 12.10 二进制文件输入输出 479 ...
  • 8.3.7 检测字符串中的字符数或者字节数 225 8.3.8 把字符串的一部分替换成另一个字符串 226 8.3.9 把字符串填充到字符串中 226 8.3.10 在小写和大写之间进行转化 227 8.3.11 移除前导空格和尾部空格 228 ...
  • 【文本转EXCEL】 将文本文件按指定分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表存储格内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...
  • 所谓动态解释执行,是指在最终应用程序运行过程中,由用户自行输入命令表达式组成的字符串序列,然后交由应用程序解释执行。而在应用程序开发过程中的编译阶段由程序开发人员控制运算操作顺序且由编译程序完成命令...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【文本转EXCEL】 将文本文件按指定分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表存储格内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...
  • powerbuilder

    2013-11-21 17:11:48
    参数printjobnumber:用PrintOpen()函数打开的打印作业号string:string类型,指定发送到打印机的字符串。在该字符串,使用非打印字符的ASCII码值表示非打印字符zerochar:integer类型,可选项,指定在string参数...
  • 【文本转EXCEL】 将文本文件按指定分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表存储格内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...
  • 【文本转EXCEL】 将文本文件按指定分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表存储格内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...
  • 【文本转EXCEL】 将文本文件按指定分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表存储格内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...

空空如也

空空如也

1 2 3 4 5
收藏数 82
精华内容 32
关键字:

文本文件中的字符串有没有结束符