【问题标题】:Remove all newlines from inside a string从字符串中删除所有换行符
【发布时间】:2012-10-29 05:33:54
【问题描述】:

我正在尝试从字符串中删除所有换行符。我已经阅读了如何做到这一点,但似乎由于某种原因我无法这样做。这是我正在做的一步一步:

string1 = "Hello \n World"
string2 = string1.strip('\n')
print string2

我仍然在输出中看到换行符。我也尝试过 rstrip ,但我仍然看到换行符。谁能解释我为什么做错了?谢谢。

【问题讨论】:

  • 将str 命名为变量不一定是个好主意,因为str 是built-in 函数。

标签: python string newline substitution


【解决方案1】:

这应该在很多情况下都有效 -

text = ' '.join([line.strip() for line in text.strip().splitlines() if line.strip()])
text = re.sub('[\r\n]+', ' ', text)

【讨论】:

    【解决方案2】:

    strip 仅删除字符串开头和结尾的字符。你想用replace:

    str2 = str.replace("\n", "")
    re.sub('\s{2,}', ' ', str) # To remove more than one space 
    

    【讨论】:

    • 正是我需要的。谢谢!
    • 在我的例子中,它是 str2 = str.replace("\r", "")
    • 我认为strip() 删除了字符串开头AND结尾的字符。
    • 非常不安全。不会替换所有换行符
    【解决方案3】:

    正如@john 所说,最可靠的答案是:

    string = "a\nb\rv"
    new_string = " ".join(string.splitlines())
    

    【讨论】:

    • 谢谢,这是唯一真正删除自然换行符的方法。 IE;来自用户输入,不仅仅是\n
    • 我想对 pandas 数据框中的所有元素执行此操作
    • 这个答案也是最容易阅读的。这给代码增加了最少的复杂性。
    【解决方案4】:

    因为我最近在从文件中读取文本时遇到了同样的问题,所以回答迟了;尝试了几个选项,例如:

    with open('verdict.txt') as f: 
    

    下面的第一个选项会生成一个名为 alist 的列表,去掉 '\n',然后重新连接成全文(如果您希望只有一个文本,则可选):

    alist = f.read().splitlines()
    jalist = " ".join(alist)
    

    下面的第二个选项更容易和简单地生成名为atext 的文本字符串,用空格替换'\n';

    atext = f.read().replace('\n',' ')
    

    有效;我已经做了。这干净、简单、高效。

    【讨论】:

      【解决方案5】:

      如果文件在文本中间包含换行符,strip() 和 rstrip() 都不能解决问题,

      strip 系列用于从字符串的开头和结尾修剪

      replace()是解决你问题的方法

      >>> my_name = "Landon\nWO"
      >>> print my_name
         Landon
         WO
      
      >>> my_name = my_name.replace('\n','')
      >>> print my_name
      LandonWO
      

      【讨论】:

        【解决方案6】:

        strip() 返回删除了前导和尾随空格(默认)的字符串。

        所以它会将" Hello World " 转换为"Hello World",但它不会删除字符串之间的\n 字符。

        试试replace()。

        str = "Hello \n World"
        str2 = str.replace('\n', '')
        print str2
        

        【讨论】:

          【解决方案7】:

          strip() 在删除前导和尾随空格后返回字符串。见doc

          在你的情况下,你可能想试试replace():

          string2 = string1.replace('\n', '')
          

          【讨论】:

            【解决方案8】:

            或者你可以试试这个:

            string1 = 'Hello \n World'
            tmp = string1.split()
            string2 = ' '.join(tmp)
            

            【讨论】:

              猜你喜欢
              • 2012-06-04
              • 2016-11-13
              • 2011-10-13
              • 1970-01-01
              • 2014-03-13
              相关资源
              最近更新 更多