【问题标题】:How can you remove the new line characters in python?如何删除python中的换行符?
【发布时间】:2010-11-27 14:28:52
【问题描述】:

我正在编写一个 vcf 解析器,我打开了文件,但现在我需要解析他们的名字。文件显示“FN:John Smith;;;\n\r”我想取出\n和\r。有人可以帮帮我吗?

【问题讨论】:

    标签: python newline


    【解决方案1】:

    使用rstrip函数:

    s = s.rstrip()
    

    这将删除字符串末尾的所有空格。

    【讨论】:

    • -1 两个原因:(a) 使用 rstrip() 是一个 kludgeon(介于 kludge 和 bludgeon 之间),在这种情况下它“有效”,但是非常糟糕的习惯。使用文本文件的安全工作习惯(不使用 csv 模块时)是通过使用 rstrip('\n') 然后拆分或其他方式丢弃 ONLY 换行符。这样,当字段以制表符分隔时,或者当您寻找末尾有尾随空格的可变宽度字段或记录是固定长度等时,您就不会遇到麻烦。 (b) 不评论奇怪的 \r 在 OP 的数据末尾。
    【解决方案2】:

    如果如您所说,文件显示"FN:John Smith;;;\n\r",那么您就有问题了——\r 完全出乎意料。

    您使用的是什么操作系统、Python 的版本以及您是如何确定文件显示的?

    这是读取文件的常用习语,该文件的行由您正在使用的操作系统通常使用的终止符终止,并且字段由; 字符分隔:

    f = open('myfile.txt', 'r')
    for line in f:
        # standard OS terminator is converted to `\n` 
        line = line.rstrip('\n') # remove trailing newline
        fields = line.split(';')
        # fields[0] should refer to "FN:John Smith" in your example
        for field_index, field in enumerate(fields):
            if not field:
                continue # empty field
            tag, value = field.split(':')
            print "Field %d: tag %r, value %r" % (field_index, tag, value)
    

    你可能没有读过这个Wikipedia article ...我注意到“FN”表示“格式化名称”,而不是“名字”,并且有一个“N”标签更容易解析:

    N:Gump;Forrest
    FN:Forrest Gump
    

    我还注意到文章中没有出现像FN:John Smith;;; 这样的行。

    您也许可以使用现有代码;见this StackOverflow question

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 2015-09-09
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多