Skip to main content
 首页 » 编程设计

python之从文本文件中读取特定的 Python 列表

2025年05月04日14kuangbin

例如,我目前正在尝试读取文件中冒号“:”之后出现的所有数据。 在仅包含以下内容的文本文件中:

SAM Account Type : 805306368

with open("Sample.txt") as myfile: 
for line in myfile: 
        flag=0 
        if ("SAM Account Type" in line): 
            for ch in line: 
                if (flag and ch!=' ' and ch!='\n'): 
                    B+=ch 
                elif (ch == ':'): 
                    flag+=1 
                    S1 = myfile.read(10) 
                   # print (ch) 
                elif (ch=='\n'): 
                    flag =0 
                else: 
                    pass 
            print (B) 

这就像一个魅力只显示我“805306368” 但是,当我尝试使用列表检查“SAM 帐户类型”以外的更多变量时,它无法提供正确的输出。

例如下面的文件:

SAM Account Name : Ramachandran. S

SAM Account Type : 805306368

Description :

User Account Control : 544

When Created:09/21/2015 06:33:53

Lastlogontimestamp : 130966421275783509

When Changed : 01/07/2016 12:08:47

Account Expires : 922337203685477580

Last logoff : 00:00:00.0000000

Last logon : 130971364125825724

和下面的代码:

A = [] 
A.extend({"SAM Account Type", 
"User Account Control", 
"Last logon", 
"Lastlogontimestamp", 
"Last logoff", 
"Account Expires"}) 
B = "" 
 
with open("Sample.txt") as myfile: 
    for line in myfile: 
 
 
        for i in range(len(A)): 
            flag=0 
            if (str(A[i]) in line): 
            #if ("SAM Account Type" in line): 
                for ch in line: 
                    if (flag and ch!=' ' and ch!='\n'): 
                        B+=ch 
                    elif (ch == ':'): 
                        flag+=1 
                        S1 = myfile.read(10) 
 
                    elif (ch=='\n'): 
                        flag =0 
                    else: 
                        pass 
                print (B) 
                B="" 

读取属于列表“A”中实体的“:”之后的所有字符,将它们存储在“B”中,并为每一行打印 B。

给出以下内容:

'805306368'
'544'
'130966421275783509'
'922337203685477580'
'130971364125825724'

当它还应该给出“上次注销”时,即“00:00:00.0000000” 但它不起作用。任何帮助将不胜感激。

请您参考如下方法:

我认为您可以阅读所有行并根据您的要求进行处理。您可以根据“:”拆分句子并使用标记。

注意:由于时间中也有 :,您可能需要使用“:”(带两个空格的冒号)

示例代码:

In [1]: with open("./input.txt") as f:  
   ...:     data = f.readlines() 
   ...:      
 
 
In [2]: data = [d for d in data if d!='\n'] #Drop empty lines 
 
In [3]: data = [d[:-1].split(" : ") for d in data] # exclude \n (last char in the line) and split based on colon 
 
In [4]: data 
Out[4]:  
[['SAM Account Name', 'Ramachandran. S'], 
 ['SAM Account Type', '805306368'], 
 ['Description :'], 
 ['User Account Control', '544'], 
 ['When Created:09/21/2015 06:33:53'], 
 ['Lastlogontimestamp', '130966421275783509'], 
 ['When Changed', '01/07/2016 12:08:47'], 
 ['Account Expires', '922337203685477580'], 
 ['Last logoff', '00:00:00.0000000'], 
 ['Last logon', '130971364125825724']] 

进一步,

  1. 您可以使用从处理中获得的键值对将其转换为字典。稍后您可以将此 dict 转储到 json 以执行其他任务。
  2. 看来您是从类似 C 的语言转向 Python 的。在 Python 中,大部分内容都是内置的,例如读取文件、拆分字符串等。因此,请引用一些教程,例如 https://developers.google.com/edu/python/。等了解更多