如何使用 Python3 删除括号和所有数据

Posted

技术标签:

【中文标题】如何使用 Python3 删除括号和所有数据【英文标题】:How to remove parentheses and all data within using Python3 【发布时间】:2020-02-01 03:50:12 【问题描述】:

我正在尝试使用 Python 3 删除括号和所有数据。

我研究了几个不同的主题,包括这里:

How to remove parentheses and all data within using Pandas/Python?

终于得到之后:

re.sub(r"\(.*\)|\s-\s.*", r"", str1)

为了运行没有错误,它没有从 str1 字符串中删除内容。

然后我尝试了这种方法:

How to remove text within parentheses from Python string?

在读取文件并存储到 str1 之前从文件中删除括号和内容 - 但我收到此错误:

Traceback (most recent call last):

  File "sum_all.py", line 27, in <module>
    data.append(line.replace(match.group(),'').strip())
AttributeError: 'NoneType' object has no attribute 'group'

这是代码,我显然是新手,感谢任何帮助!

# Python3 program to calculate sum of 
# all numbers present in a str1ing 
# containing alphanumeric characters 

# Function to calculate sum of all 
# numbers present in a str1ing 
# containing alphanumeric characters 
import re
import math
import pyperclip
import pandas
def find_sum(str1): 
    # Regular Expression that matches digits in between a string 
    return sum(map(int,re.findall('\d+',str1))) 

def find_sum2(str2): 
    # Regular Expression that matches digits where hr follows short for hours 
    return sum(map(int,re.findall('(\d+)hr',str1)))

str2=0

# Regular Expression 
data=[]
pattern=r'\(.+\)|\s\-.+'
with open('project.txt','r') as f:
    for line in f:
        match=re.search(pattern,line)
        data.append(line.replace(match.group(),'').strip())

print(data)

# input alphanumeric str1ing 
with open ("project.txt", "r") as myfile:
    str1=myfile.read().replace('\n', '')


# Regular Expression that removes (*) and Normalizes White Space - didn't work
#re.sub(r"\(.*\)|\s-\s.*", r"", str1)

# Regular Expression that removes (*) - didn't work
#re.sub(r"\(.*\)", r"", str1)

【问题讨论】:

【参考方案1】:

你可以试试这个。 r"\((.*?)\)"

\(\) 表示我们要定位实际的括号。

然后表达式(.*?) 周围的括号表示我们想要对里面的内容进行分组。

最后,.*? 表示我们想要任何字符 . 以及该字符 *? 的任何重复。

s = "start (inside) this is in between (inside) end"
res = re.sub(r"\((.*?)\)", "", s)
print(res) 

打印

'start  this is in between  end'

希望对您有所帮助。

【讨论】:

您好,我试过了,但我尝试时它不起作用。我得到:“开始(内部)这是在(内部)结束之间”我在 mac 终端内运行一个文件。 当我这样做时效果很好(非常感谢): s = "start (inside) this is in between (inside) end" s = re.sub(r"((.*?) )", "", s) 字符串是 python link 中的不可变对象。所以函数re.sub(..., s)不能直接改变s的值。这就是为什么当您期望从函数中获取字符串时,通常会将其作为返回值。如s2=re.seb(...., s)

以上是关于如何使用 Python3 删除括号和所有数据的主要内容,如果未能解决你的问题,请参考以下文章

编写一个函数,在开头和结尾添加括号,使所有括号匹配并返回

C# Regex - 如何从字符串中删除多个成对的括号

如何更正括号的添加以不必要地使用括号python3

Python 3,如果列表中包含特定的东西,如何删除部分元素3 [重复]

JavaScript:如何删除外部数组中的所有方括号? [复制]

如何从数组元素中删除括号