我正在努力执行一些正则表达式来删除尾随的无关字符。我已经尝试了一些我在这里找到的想法,但没有一个是我正在寻找的。p>
数据看起来像这样(只有一列数据):
City1[edit]
City2 (University Name)
City with a Space (University Name)
Etc.
基本上,我在这里遇到的麻烦是我不一定能删除空格后的所有内容,因为有时城市名称包含空格(“纽约市”)。
但是,我认为我可以采用三步法:
- 替换 [],(),{} 字符集之间的任何内容(这将删除示例数据中的“编辑”和“大学名称”。
- 替换 [],(),{} 类型的字符,因为它们现在是额外的字符。
- 修剪任何尾随空格(这将保留城市名称中的空格,例如圣保罗)
我有两个主要问题: 1. 有没有办法在一个命令中执行此操作,还是必须使用三个单独的命令? 2. 如何使用正则表达式删除特定字符之间的字符?
我尝试过的代码:
DF[0].replace(r'[^0-9a-zA-Z*]$', "", regex=True, inplace = True)
---然而,这只替换了特殊字符的最终迭代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/