【问题标题】:Python3: How to remove \r only and concate divided lines?Python3:如何仅删除 \r 并连接分割线?
【发布时间】:2022-01-23 16:16:44
【问题描述】:

我想从转换后的 pdf 中准备数据,但我正在为转义字符而苦苦挣扎。 以 \r\n 结尾的普通行,但有些行的 \r 来自以前的分栏符。 如何仅删除 \r 并连接这些行? 我尝试了各种字符串替换,但都没有成功。

当前字符串:

21,xxxxxxxxxxxxxxxxxxxxxxx,"xxxxxxxxxxxxx(16xxxxxxxxx),10MBitEthernet\r
interface.",xxxxxx,"1.105,00 ",0%,"1.000,4 ",\r\n

想要的字符串:

21,xxxxxxxxxxxxxxxxxxxxxxx,"xxxxxxxxxxxxx(16xxxxxxxxx),10MBitEthernetinterface.",xxxxxx,"1 .105,00 ",0%,"1.000,4 ",\r\n

【问题讨论】:

    标签: python string replace concatenation python-re


    【解决方案1】:

    这将删除任何字符串中除最后一次出现的 '\r' 之外的所有内容:

    cstring = '21,xxxxxxxxxxxxxxxxxxxxxxx,"xxxxxxxxxxxxx(16xxxxxxxxx),10MBitEthernet\rinterface.",xxxxxx,"1.105,00 ",0%,"1.000,4 ",\r\n'
    
    cstring = cstring.replace('\r', '', cstring.count('\r') - 1)
    
    print(cstring.encode())
    

    输出

    b'21,xxxxxxxxxxxxxxxxxxxxxxx,"xxxxxxxxxxxxx(16xxxxxxxxx),10MBitEthernetinterface.",xxxxxx,"1.105,00 ",0%,"1.000,4 ",\r\n'
    

    【讨论】:

      【解决方案2】:

      另一种解决方案是使用re 模块。在下面的示例中,我们提供了一个要查找的模式。模式是:查找所有\r 后面没有紧跟\n 并替换为''

      import re
      
      raw_string = '21,xxxxxxxxxxxxxxxxxxxxxxx,"xxxxxxxxxxxxx(16xxxxxxxxx),10MBitEthernet\rinterface.",xxxxxx,"1.105,00 ",0%,"1.000,4 ",\r\n'
      desired_string = '21,xxxxxxxxxxxxxxxxxxxxxxx,"xxxxxxxxxxxxx(16xxxxxxxxx),10MBitEthernetinterface.",xxxxxx,"1.105,00 ",0%,"1.000,4 ",\r\n'
      
      final_string = re.sub(r'\r(?!\n)', '', raw_string)
      
      print(final_string == desired_string) # True
      

      【讨论】:

        猜你喜欢
        • 2017-05-06
        • 1970-01-01
        • 2018-06-03
        • 1970-01-01
        • 1970-01-01
        • 2019-12-20
        • 1970-01-01
        • 2021-08-30
        • 2017-08-09
        相关资源
        最近更新 更多