在Python中的特定字符之后删除部分字符串

Posted

技术标签:

【中文标题】在Python中的特定字符之后删除部分字符串【英文标题】:Remove part of string after a specific character in Python 【发布时间】:2020-06-17 19:46:37 【问题描述】:

给定一个time 列如下:

             time
0   2019Y8m16d10h
1    2019Y9m3d10h
2  2019Y9m3d10h58s
3    2019Y9m3d10h

如何删除以d 开头的子字符串,我尝试过使用df['time'].str.split('d')[0],但它不起作用。

我想要的结果会是这样。谢谢。

        time
0    2019Y8m16d
1    2019Y9m3d
2    2019Y9m3d
3    2019Y9m3d

【问题讨论】:

【参考方案1】:

您很接近,需要str[0] 来选择列表,然后添加d

df['time'] = df['time'].str.split('d').str[0].add('d')

或者:

df['time'] = df['time'].str.split('(d)').str[:2].str.join('')

print (df)
         time
0  2019Y8m16d
1   2019Y9m3d
2   2019Y9m3d
3   2019Y9m3d

或者使用Series.str.extract:

df['time'] = df['time'].str.extract('(.+d)')
print (df)
         time
0  2019Y8m16d
1   2019Y9m3d
2   2019Y9m3d
3   2019Y9m3d

【讨论】:

谢谢,这可行,但d 也会丢失,我想保留它。【参考方案2】:

一种可能的解决方案:

df['time'].str.extract(r'([^d]+d)')

【讨论】:

【参考方案3】:

或者您可以简单地使用应用功能来解决如下目的:

df.apply(lambda x: x['time'].split('d')[0]+'d',axis=1)

【讨论】:

以上是关于在Python中的特定字符之后删除部分字符串的主要内容,如果未能解决你的问题,请参考以下文章

Python - 在特定字符串的第一个实例之后删除文本并使用不同的字符串再次执行

Python如何删除文本文件中特定字符串之后或之前的特定行数

Python字符串在特定字符出现3次后删除所有内容

如何检查 C# 中字符串的特定部分之后的字符?

Python3 创建基本功能 - 删除特定字符串/翻译

如何从 Python 中的一组字符串中删除特定的子字符串?