python - 使用正则表达式删除不需要的字符串结尾

标签 python regex pandas

我正在努力执行一些正则表达式来删除尾随的无关字符。我已经尝试了一些我在这里找到的想法,但没有一个是我正在寻找的。

数据看起来像这样(只有一列数据):

City1[edit]

City2 (University Name)

City with a Space (University Name)

Etc.

基本上,我在这里遇到的麻烦是我不一定能删除空格后的所有内容,因为有时城市名称包含空格(“纽约市”)。

但是,我认为我可以采用三步法:

  1. 替换 [],(),{} 字符集之间的任何内容(这将删除示例数据中的“编辑”和“大学名称”。
  2. 替换 [],(),{} 类型的字符,因为它们现在是额外的字符。
  3. 修剪任何尾随空格(这将保留城市名称中的空格,例如圣保罗)

我有两个主要问题: 1. 有没有办法在一个命令中执行此操作,还是必须使用三个单独的命令? 2. 如何使用正则表达式删除特定字符之间的字符?

我尝试过的代码:

  1. DF[0].replace(r'[^0-9a-zA-Z*]$', "", regex=True, inplace = True) ---然而,这只替换了特殊字符的最终迭代

  2. DF[0].replace(r'[\W+$|^0-9a-zA-Z*]',"",regex=True, inplace=True) --不幸的是,这只是替换了所有内容,让我的所有数据空白

最佳答案

如果您总是知道首先出现的括号字符,您可以这样做:

创建数据

df=pd.DataFrame({'names':['City1[edit]', 
                          'City2 (University Name)', 
                           'City with a Space {University Name}']})

然后替换第一个括号后的所有内容。

df.names.str.replace('\[.*|\(.*|\{.*', '').str.strip()

输出

0                City1
1                City2
2    City with a Space

关于python - 使用正则表达式删除不需要的字符串结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41251068/

相关文章:

python - 连接不同长度的 numpy 数组的字典(尽可能避免手动循环)

Python 数据框复制切片警告

Python Twisted - 服务器通信

Python 操作 json、列表和字典

python - 从 python 中删除导入的模块

Java - 正则表达式来验证值

python - 计算每组的滚动总和

python - 使用 Gensim 对每个文档中的特征进行评分。也是一个 Python 内存问题

javascript - 如何通过 JS 更改 HTML 文档中字符串的所有实例而不影响其标记?

javascript - 组合一个或多个字符 (`+?` ) 和正先行 (?=)