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

Python从文件提取数据赋值变量故障:Username与Password无法正常输出

问题

尝试使用Python从file2.txt提取数据并赋值给对应变量,编写代码后运行结果不符合预期:Username和Password的值无法显示,仅输出空白行。

编写的代码

import re


username = ""
password = ""
full_name = ""
birth_date = ""
phone_number = ""
address = ""


with open("file2.txt", "r") as f:
    contents = f.read()

lines = contents.split("\n")
for line in lines:
    if ": " in line:
        key, value = re.split(":\s*", line)
        
        if key == "Username":
            username = value
        elif key == "Password":
            password = value
        elif key == "Nama Lengkap":
            full_name = value
        elif key == "Tanggal Lahir":
            birth_date = value
        elif key == "Nomor HP":
            phone_number = value
        elif key == "Alamat":
            address = value

print(username)
print(password)
print(full_name)
print(birth_date)
print(phone_number)
print(address)

当前运行输出

kjdaskd
10-20-1000
+218112301231
dsajh
Press any key to continue . . .

file2.txt内容

Username : dsadj
Password : 12345
Nama Lengkap: kjdaskd
Tanggal Lahir: 10-20-1000
Nomor HP: +218112301231
Alamat: dsajh

期望输出

dsadj
12345
kjdaskd
10-20-1000
+218112301231
dsajh
Press any key to continue . . .

解决方案

问题原因

  1. 代码中if ": " in line:的判断会遗漏冒号后无空格的行,同时处理Username : dsadj这类行时,re.split(":\s*", line)拆分出的key是"Username "(末尾带空格),与判断条件中的"Username"(无空格)不匹配,导致赋值失败。
  2. 未限制拆分次数,若值中包含冒号会被错误拆分。

修改后的代码

import re

username = ""
password = ""
full_name = ""
birth_date = ""
phone_number = ""
address = ""

with open("file2.txt", "r") as f:
    contents = f.read()

lines = contents.split("\n")
for line in lines:
    # 处理所有包含冒号的非空行
    if ":" in line and line.strip():
        # 限制拆分次数为1,避免值内冒号干扰
        key_part, value = re.split(":\s*", line, maxsplit=1)
        # 去除key前后空白字符,匹配判断条件
        key = key_part.strip()
        
        if key == "Username":
            username = value
        elif key == "Password":
            password = value
        elif key == "Nama Lengkap":
            full_name = value
        elif key == "Tanggal Lahir":
            birth_date = value
        elif key == "Nomor HP":
            phone_number = value
        elif key == "Alamat":
            address = value

print(username)
print(password)
print(full_name)
print(birth_date)
print(phone_number)
print(address)

修改说明

  • 替换判断条件为if ":" in line and line.strip():确保处理所有含冒号的有效行,不受冒号后空格影响。
  • re.split添加maxsplit=1:防止值中包含冒号时被错误拆分。
  • 对key_part执行strip():去除key前后空白,解决Username : dsadj拆分后key带空格的匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:50:24