当前位置: 首页 > 面试题库 >

从行首和结尾或仅行尾删除字符

长孙鸿
2023-03-14
问题内容

我想使用正则表达式从字符串中删除一些符号,例如:

== (发生在行的开头和结尾),

* (仅在一行的开头)。

def some_func():
    clean = re.sub(r'= {2,}', '', clean) #Removes 2 or more occurrences of = at the beg and at the end of a line.
    clean = re.sub(r'^\* {1,}', '', clean) #Removes 1 or more occurrences of * at the beginning of a line.

我的代码有什么问题?看来表达是错误的。如果字符/符号出现在行的开头或结尾(出现一次或多次),如何删除?


问题答案:

如果只想从开头和结尾删除字符,则可以使用该string.strip()方法。这将给出如下代码:

>>> s1 = '== foo bar =='
>>> s1.strip('=')
' foo bar '
>>> s2 = '* foo bar'
>>> s2.lstrip('*')
' foo bar'

strip方法从字符串的开头和结尾ltrip删除参数中给定的字符,仅从开头rstrip删除它们,仅从结尾删除它们。

如果您真的想使用正则表达式,则它们将如下所示:

clean = re.sub(r'(^={2,})|(={2,}$)', '', clean)
clean = re.sub(r'^\*+', '', clean)

但是恕我直言,使用strip/ lstrip/rstrip将是最适合您要执行的操作。

编辑: 在尼克的建议下,这是一个解决方案,可以在一行中完成所有这些操作:

clean = clean.lstrip('*').strip('= ')

(一个普遍的错误是认为这些方法按照在参数中给定的顺序删除字符,实际上,参数只是要删除的一系列字符,无论它们的顺序如何,这就是为什么.strip('= ')会删除每个’=开头和结尾处的’和’‘,而不仅仅是字符串’=’。)



 类似资料:
  • 问题内容: 我有一个字符串,我想仅使用Java从字符串的结尾删除行尾字符 我想成为 (此问题类似于但与问题593671不同) 问题答案: 您可以使用。这修剪和字符在字符串的结尾 正则表达式的解释如下: 是包含和的字符类 是一个或多个重复 是弦末锚 参考文献 regular-expressions.info/Anchors,角色类,重复 相关话题 您还可以使用修剪字符串 开头 和 结尾 的 所有 空

  • 问题内容: 我有这样的字符串 我想删除,并从。我希望结果是。我怎样才能做到这一点? 问题答案: 正则表达式与replaceAll。 如果您只想在成对时删除\ r \ n(上面的代码删除了\ r或\ n),请执行以下操作:

  • 问题内容: 我有一个包含一些文本后跟空白行的字符串。保留文本内容并从末尾删除空白换行符的最佳方法是什么? 问题答案: 使用方法从字符串的开头和结尾去除空格(空格,换行等)。

  • 目前我正在测试PhpStorm IDE。它真的很棒,除了一个功能。它不会从文件末尾删除空行。现在删除不需要的空格,但末尾的空行不会删除。 这对我来说真的很烦人。我能改变这种行为吗?

  • 本文向大家介绍Perl删除尾随的换行符,包括了Perl删除尾随的换行符的使用技巧和注意事项,需要的朋友参考一下 示例 该函数chomp将从传递给它的每个标量中删除一个换行符(如果存在)。chomp将使原始字符串变异,并返回删除的字符数 您也可以chomp一次输入多个字符串: 但是通常,没有人担心删除了多少换行符,因此chomp通常在空上下文中看到,并且通常是由于从文件中读取了行:        

  • 问题内容: 我必须采用以下形式的大量单词: 然后使用strip功能,将其转换为: 我以为我写的东西行得通,但是我不断收到错误消息: “’list’对象没有属性’strip’” 这是我尝试的代码: 问题答案: