【问题标题】:how to find substring from a single line string如何从单行字符串中查找子字符串
【发布时间】:2021-03-19 17:29:48
【问题描述】:

假设,我有一个字符串 s="panpanIpanAMpanJOEpan" 。从中我想找到单词 pan 并将其替换为空格,以便我可以将输出字符串作为“I AM JOE”。我该怎么做??

实际上我也不知道如何从没有空格的长字符串中找到某些子字符串,例如上面提到的。 如果有人帮助我了解这一点,那就太好了。

【问题讨论】:

标签: python string replace find space


【解决方案1】:

您可以使用replace,一次替换所有出现的子字符串。
如果您想自己 find 子字符串,您可以手动完成:

s = "panpanIpanAMpanJOEpan"

while True:
    panPosition = s.find('pan')  # -1 == 'pan' not found!
    if panPosition == -1:
        s = s.strip()
        break
    #  Cut out pan from s and replace it with a blanc.
    s = s[:panPosition] + ' ' + s[panPosition + 3:]
print(s)

输出:

I AM JOE

【讨论】:

    【解决方案2】:

    正如 DarrylG 和其他人所提到的,.replace 会按照您的要求进行操作,您可以在其中定义要替换的内容(“pan”)以及要替换的内容(“”)。

    要在较长的字符串中查找某个字符串,您可以使用.find(),它将您要查找的字符串以及可选的从哪里开始和停止查找它(作为整数)作为参数。

    如果你想在一个更大的字符串中找到所有出现的字符串,有两种选择:

    • 找到带有find() 的字符串,然后剪切字符串使其不再包含您的搜索词并重复此操作,直到.find() 方法返回-1(这意味着该搜索词不再在字符串中找到)李>
    • 或使用regex 模块并使用.finditer 方法查找所有出现的字符串Link to someone explaining exactly that on stackoverflow.

    编辑:如果您不知道要搜索什么,它会变得有点棘手,但您可以编写一个正则表达式表达式,该表达式也可以使用相同的正则表达式模块提取此数据。如果您知道最终结果应该是什么,这很容易(在您的情况下,我是乔)。如果你不这样做,它会变得更加复杂,我们需要额外的信息来帮助解决这个问题。

    【讨论】:

      【解决方案3】:

      如果你不知道 pan,你可以利用你要查找的字母都是大写的。

      fillword =  min(set("".join(i if i.islower() else ' ' for i in s).split(' '))-set(['']),key=len)
      

      首先用空格替换所有大写字母,然后按空格分割并找到最小的非空单词。

      使用replace 替换为空格,然后使用strip 删除多余的空格。

       s="panpanIpanAMpanJOEpan"
       s.replace(fillword,' ').strip()
      

      给予:

      'I AM JOE'
      

      【讨论】:

      • 首先,他想知道如何获得'pan'。
      • @Christian 您添加的优秀代码fillword = min(set("".join(i if i.islower() else ' ' for i in s).split(' ')) - set(['']), key=len)
      【解决方案4】:
      s="panpanIpanAMpanJOEpan"
      print(s.replace("pan"," ").strip())
      

      使用替换

      输出:

      I AM JOE 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        • 1970-01-01
        • 2011-07-13
        • 2023-01-19
        相关资源
        最近更新 更多