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

如何分割字符串提取分隔符间内容?以提取用户名密码为例

提取字符串中的username和password值

问题描述

给定字符串:

jfdajfjlausername=Bob&djfkaak;jdskjpsasword=12345&

需要从中提取出username的值为Bob,password的值为12345。尝试过用&分割字符串但无法有效提取,现有一段未完成的Python代码:

left='password='
right='&'
userleft='username='
for x in file.readlines():
    if 'password=' and 'username=' in x:
        text=str(x)
        #password=(text[text.index(left)+len(left):text.index(right)])
        #username=(text[text.index(userleft)+len(userleft):text.index(useright)])

解决方案

方法1:使用正则表达式(推荐)

正则可精准匹配字段名与对应值,不受前后干扰字符影响:

import re

text = "jfdajfjlausername=Bob&djfkaak;jdskjpsasword=12345&"
# 匹配username的值,若原字符串中password的拼写是笔误(应为password),可修改正则中的字段名
username_match = re.search(r'username=([^&]+)', text)
password_match = re.search(r'psasword=([^&]+)', text)

if username_match:
    username = username_match.group(1)
    print(f"username: {username}")  # 输出 Bob
if password_match:
    password = password_match.group(1)
    print(f"password: {password}")  # 输出 12345
  • 正则说明:username=([^&]+) 表示匹配username=后面直到第一个&的所有字符,括号内的部分即为要提取的值。

方法2:改进原有字符串切片代码

针对原有代码的问题,需分别定位每个字段的起始与结束位置,避免共用分隔符导致的错误:

text = "jfdajfjlausername=Bob&djfkaak;jdskjpsasword=12345&"

# 提取username
user_left = 'username='
user_start = text.index(user_left) + len(user_left)
user_end = text.index('&', user_start)  # 从username起始位置后查找第一个&
username = text[user_start:user_end]

# 提取password(若原字符串中是笔误,将psasword=改为password=即可)
pwd_left = 'psasword='
pwd_start = text.index(pwd_left) + len(pwd_left)
pwd_end = text.index('&', pwd_start)
password = text[pwd_start:pwd_end]

print(f"username: {username}")
print(f"password: {password}")
  • 关键修改:用text.index('&', start_pos)指定从字段起始位置之后查找分隔符&,避免匹配到前面的无关符号。

注意事项

原字符串中password的拼写为psasword,若为输入笔误,需将代码中对应的字段名改为password=以匹配正确内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:35:19