python - 如何删除可变长度字符串的一部分

标签 python regex pandas

我有一个 DataFrame,其中一列是看起来像这样的字符串行:

Received value 126;AOC;H3498XX from 602
Received value 101;KYL;0IMMM0432 from 229

我想删除(或替换为任何内容)第二个分号后面的部分,使其看起来像

Received value 126;AOC; from 602

但是我想删除的这一部分将具有变化且不可预测的长度(始终是 A-Z 和 0-9 的组合)。分号和 from 始终可供引用。

我正在尝试通过研究此链接来使用正则表达式:https://docs.python.org/3/library/re.html

import re
for row in df[‘column’]:
    row = re.sub(‘;[A-Z0-9] from’ , ‘; from’, row)

我认为 [A-Z0-9] 未能包含我想要的不同长度方面。

最佳答案

使用 str.replace() 的示例与 str.split() :

s = ['126;AOC;H3498XX from 602', '101;KYL;0IMMM0432 from 229']

for elem in s:
    print(elem.replace(elem.split(";",2)[-1].split()[0],''))

输出:

126;AOC; from 602
101;KYL; from 229

编辑:

同样的方法也适用于以下示例:

s = ['Received value 126;AOC;H3498XX from 602', 'Received value 101;KYL;0IMMM0432 from 229']

for elem in s:
    print(elem.replace(elem.split(";",2)[-1].split()[0],''))

输出:

Received value 126;AOC; from 602
Received value 101;KYL; from 229

关于python - 如何删除可变长度字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55612966/

相关文章:

c# - 正则表达式匹配不以空格开头、包含或结尾且非空字符串

PHP + MySQL 多数据库网站到带前缀的单数据库网站。

php - 匹配括号内任何字符的正则表达式

python - 为什么PyCharm不导入/检测从源代码编译和安装的OpenCV?

python - 将 2 个相同的 pandas 数据框加入多级行键

python - 如何将第二个值添加到同一循环?

python - 使用 .strip() python pandas 删除空格而无意中删除了数字

python - Pandas 数据帧 "all true"标准

python - 根据其他列填充不同的列(第一个为列标题,第二个为要获取的值)

python - 将一个非常大的 Pandas 数据框有效地分成较小的数据框,知道大的是有序的