【问题标题】:Extract a string and replace it with something between $$提取字符串并将其替换为 $$ 之间的内容
【发布时间】:2021-05-12 04:05:59
【问题描述】:

我在解析文件后创建了一个长字符串,每当我遇到 $$ 1903810948 $$ 时,我需要从 $$ 之间剥离数字并将其单独保存并从字符串中删除 $$。我正在尝试使用正则表达式,但似乎无法在 python 中找到一种方法。

编辑:该字符串基本上是从 PDF 文件中解析出来的,它的开头和结尾都有特殊字符,可以是 $ 或 $$。我需要从文件中删除内容并创建一个单独的文件,我将在其中存储我删除的任何内容。这就是为什么我不认为拆分是正确的做法。

【问题讨论】:

    标签: python regex string


    【解决方案1】:

    您可以使用split() 方法将字符串拆分为列表。

    语法

    string.split(separator, maxsplit)

    参数值

    1. 分隔符:可选。指定分割字符串时使用的分隔符。默认情况下,任何空格都是分隔符。
    2. ma​​xsplit :可选。指定要进行多少次拆分。默认值为 -1,即“所有出现”。

    这里有一个解决方案

    text = '$$ 1903810948 $$ 
    print(text.split("$$")[1].split()[0])
    

    输出

     1903810948 
    

    要删除空白,请使用不带参数的 Split()

    print(text.split("$$")[1].split()[0])
    

    【讨论】:

      【解决方案2】:

      你可以使用replace(),不需要正则表达式。

      string = '$$ 1903810948 $$'
      print(string.replace('$',''))
      

      这也会在字符串的开头和结尾留出一点空格。这应该可以解决这个问题。

      print(string.replace('$','')[1:-1])
      

      输出

      1903810948
      

      【讨论】:

        【解决方案3】:

        Regex 在这里可能不是最好的选择,因为替换会很好用。

        但是,如果您想使用正则表达式,您可以使用

        import re
        
        string = '$$ 1903810948 $$'
        pattern = r'\$\$ (\d+) \$\$'
        
        re.findall(pattern, string)
        #['1903810948']
        

        【讨论】:

          猜你喜欢
          • 2014-06-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-25
          • 2018-03-09
          • 1970-01-01
          • 2013-06-23
          相关资源
          最近更新 更多