You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从股票代码字符串中移除PLC后的字符?Python实现遇阻

解决股票代码移除PLC后内容的问题

问题背景

有如下格式的股票代码列表:

DISTIL PLC 0.1P
ITACONIX PLC 1P
LIGHT SCIENCE TECHNOLOGIES HOLDINGS ORD 1P
CERILLION PLC 0.5P
CROSSWORD CYBERSECURITY PLC 0.5P
PAN AFRICAN RESOURCES PLC 1P
INLAND HOMES PLC 10P
SERICA ENERGY PLC USD0.10
GENEDRIVE PLC 1.5P
GATTACA PLC 1P
BIDSTACK GROUP PLC 0.5P
C4X DISCOVERY HOLDINGS PLC 1P
THINKSMART LIMITED ORD NPV (DI)
BRAND ARCHITEKTS GROUP PLC 5P
MTI WIRELESS EDGE LD ORD ILS0.01
PETROTAL CORPORATION COM SHS NPV (DI)
QUANTUM BLOCKCHAIN TECHNOLOGIES PLC 0.25P
HURRICANE ENERGY PLC 0.1P
DIURNAL GROUP PLC GBP0.05
VICTORIA PLC 5P
TRUFIN PLC 91P
DEWHURST GROUP PLC 'A'NON.VTG ORD 10P
BONHILL GROUP PLC 1P
BRAVE BISON GROUP PLC 0.1P
RAMBLER METALS & MINING PLC 1P
ARROW EXPLORATION CORP. COM SHS NPV (CDI)
VALIRX PLC 0.1P
VERTU MOTORS PLC 10P
MINOAN GROUP PLC 1P
VERSARIEN PLC 1P
TAVISTOCK INVESTMENTS PLC 1P
OVOCA BIO PLC EUR0.125 (CDI)
KERAS RESOURCES PLC 1P
EQTEC PLC EUR0.001 (CDI)
ELIXIRR INTERNATIONAL PLC 0.005P
ARMADALE CAPITAL PLC 0.1P
ECHO ENERGY PLC 0.25P
AGRITERRA LD ORD 10P
LONGBOAT ENERGY PLC 10P
FEEDBACK PLC 0.25P
PIPEHAWK PLC 1P
ARC MINERALS LD ORDS NPV (DI)
PROVEXIS PLC 0.1P
QUIZ PLC 0.3P
TINTRA PLC 1P
GYG PLC GBP0.002

需求是移除每个代码中**"PLC"之后的所有内容**,但使用硬编码字符组合循环替换的方法无法正常工作,原代码如下:

misc = (
        "GBP0.01", "0.01P", "1P", "GBP1", "50P", "0.3P", "0.0", "0.02", "0.002P", "0.4P", "0.001P", "2.5P", "0.2P",
        "10P", "0.8P","PLC 1P", "0.025P","025P"," 0.00" ,"0.5P", "USD0.01", "2P", "5P","0.0","0.","GBP00001","025P","20P","GBP005")


for i in misc:
    for d in old:
        q = d.replace(i, "")
        if q not in old:
            new.append(q)

原方案失效原因

  1. 硬编码的字符组合无法覆盖所有可能的后缀(比如示例中的EUR0.125 (CDI)、'A'NON.VTG ORD 10P等都不在元组内)
  2. 嵌套循环会导致重复添加处理后的字符串,甚至误修改不含PLC的行

可行解决方案

方案1:字符串分割(简单高效)

利用split()方法,以" PLC "为分隔符截取前半部分,保留PLC本身;不含PLC的行直接保留原内容。

代码示例:

# 假设old是存放原始股票代码的列表
old = [
    "DISTIL PLC 0.1P",
    "ITACONIX PLC 1P",
    # 其余股票代码行...
    "GYG PLC GBP0.002"
]
new = []

for line in old:
    if " PLC " in line:
        # 分割后取第一部分,拼接PLC
        processed_line = line.split(" PLC ")[0] + " PLC"
    else:
        processed_line = line
    new.append(processed_line)

# 输出处理后的结果
for item in new:
    print(item)

方案2:正则表达式(适配复杂格式)

如果PLC前后的空格不固定,或需要处理更复杂的后缀格式,用正则表达式匹配PLC后的所有内容并替换为空。

代码示例:

import re

old = [
    "DISTIL PLC 0.1P",
    "ITACONIX PLC 1P",
    # 其余股票代码行...
    "GYG PLC GBP0.002"
]
new = []

# 正则匹配"PLC "之后的所有字符,替换为"PLC"
pattern = re.compile(r' PLC .*')
for line in old:
    processed_line = pattern.sub(' PLC', line)
    new.append(processed_line)

# 输出处理后的结果
for item in new:
    print(item)

处理后结果示例

DISTIL PLC
ITACONIX PLC
LIGHT SCIENCE TECHNOLOGIES HOLDINGS ORD 1P
CERILLION PLC
CROSSWORD CYBERSECURITY PLC
PAN AFRICAN RESOURCES PLC
INLAND HOMES PLC
SERICA ENERGY PLC
GENEDRIVE PLC
GATTACA PLC
BIDSTACK GROUP PLC
C4X DISCOVERY HOLDINGS PLC
THINKSMART LIMITED ORD NPV (DI)
BRAND ARCHITEKTS GROUP PLC
MTI WIRELESS EDGE LD ORD ILS0.01
PETROTAL CORPORATION COM SHS NPV (DI)
QUANTUM BLOCKCHAIN TECHNOLOGIES PLC
HURRICANE ENERGY PLC
DIURNAL GROUP PLC
VICTORIA PLC
TRUFIN PLC
DEWHURST GROUP PLC
BONHILL GROUP PLC
BRAVE BISON GROUP PLC
RAMBLER METALS & MINING PLC
ARROW EXPLORATION CORP. COM SHS NPV (CDI)
VALIRX PLC
VERTU MOTORS PLC
MINOAN GROUP PLC
VERSARIEN PLC
TAVISTOCK INVESTMENTS PLC
OVOCA BIO PLC
KERAS RESOURCES PLC
EQTEC PLC
ELIXIRR INTERNATIONAL PLC
ARMADALE CAPITAL PLC
ECHO ENERGY PLC
AGRITERRA LD ORD 10P
LONGBOAT ENERGY PLC
FEEDBACK PLC
PIPEHAWK PLC
ARC MINERALS LD ORDS NPV (DI)
PROVEXIS PLC
QUIZ PLC
TINTRA PLC
GYG PLC

内容的提问来源于stack exchange,提问作者Hazza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:15:10