【问题标题】:Python - Regex (Removing Brackets and Commas)Python - 正则表达式(删除括号和逗号)
【发布时间】:2021-02-23 06:21:00
【问题描述】:

我是 Python 和 Regex 模式的新手,这让我非常沮丧。 如果有人能帮助我找到正确的模式来删除三件事,我将不胜感激 (1) ',' (2) '] (3) ['

with open(f"/home/pi/students/{biometric_id}.txt") as f:
    content = f.readlines()
    content = str([item.replace('\n', '<br>') for item in content])
    #content = re.sub(r"\([^()]*\)", "", content)
    return render_template("Page-4.html", content=content)

[' ', ' ', ' ', '商品:奶酪卷 ', '成本:$3.00 ', '剩余余额: $12.2 ', '-------------- ']

【问题讨论】:

  • 显示更多示例数据示例
  • ['STUDENT DETAILS - ', 'Biometric ID: 653694 ', 'RFID: 18985211235 ', 'Full Name: James John ', 'Balance: $15.2 ', '------- ------------------- ', ' ', ' ', '商品:奶酪卷 ', '成本:$3.00 ', '剩余余额:$12.2 ', '-- ------------------------ ']
  • 谢谢,我没有意识到有一个正则表达式生成器:-)

标签: python python-3.x regex


【解决方案1】:

试试:

content = "['STUDENT DETAILS - ', 'Biometric ID: 653694 ', 'RFID: 18985211235 ', 'Full Name: James John ', 'Balance: $15.2 ', '-------------------------- ', ' ', ' ', 'Item: Cheese Wrap ', 'Cost: $3.00 ', 'Remaining Balance: $12.2 ', '-------------------------- '] "
content = re.sub(r"(\',\s?\')|(\'\])|(\[\')", r"", content)
print(content)

输出:

STUDENT DETAILS - Biometric ID: 653694 RFID: 18985211235 Full Name: James John Balance: $15.2 --------------------------   Item: Cheese Wrap Cost: $3.00 Remaining Balance: $12.2 --------------------------  

【讨论】:

    【解决方案2】:

    我认为你这里有一个包含列表项的文件。

    所以你要做的就是阅读它并将它们“评估”为列表项:

    with open(f"/home/pi/students/{biometric_id}.txt", 'r') as f:
        for line in f:
            data = eval(line)
            for item in data:
                # do something useful with the data
                print(item)
    

    如果文件包含:

    ['STUDENT DETAILS - ', 'Biometric ID: 653694 ', 'RFID: 18985211235 ', 'Full Name: James John ', 'Balance: $15.2 ', '-------------------------- ', ' ', ' ', 'Item: Cheese Wrap ', 'Cost: $3.00 ', 'Remaining Balance: $12.2 ', '-------------------------- ']
    

    上面会打印出来:

    STUDENT DETAILS -
    Biometric ID: 653694
    RFID: 18985211235
    Full Name: James John
    Balance: $15.2
    --------------------------
    
    
    Item: Cheese Wrap
    Cost: $3.00
    Remaining Balance: $12.2
    --------------------------
    

    【讨论】:

    • 你是对的,有更好的方法来解析这个列表数据。但是,eval 确实很危险。考虑ast.literal_eval或其他解析例程
    【解决方案3】:

    当您想验证您的正则表达式时,我建议您使用:https://regexr.com/

    关于您的问题,请尝试

    content = "Hola, (mundo)"
    re.sub(r'[,()]', '', content)
    
    >> 'Hola mundo'
    

    你怎么看?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      相关资源
      最近更新 更多