如何分隔文本文件中同一行的文本?

How to separate text in same line in text file?

我试图读取文本文件中的每一行,其中每一行都包含 ID、用户名、密码,并将这些文本(ID、用户名、密码)附加到列表中。我尝试使用分隔这些文本(id、用户名、密码) |并使用 .find("|") 搜索起始 |和结束 |对于文本,但它不起作用。任何帮助将不胜感激。

test.txt

|ctm1|Jackson|Jacksonmartinez123
|ctm2|Kaijun|Kaijunmartin

Python 文件

user = []

with open("test.txt",'r') as userfile: 
     # for each line in test.txt, append id,username and password
     # seperate id,username and password by finding "|"
     for line in userfile.readlines():
          id = line[line.find("|"):line.find("|")]
          username = line[line.find("|"):line.find("|")]
          password = line[line.find("|"):]
          user.append([id.strip("|"),username.strip("|"),password.lstrip("|").rstrip("\n")])
     print(user)

输出:

[['', '', 'ctm1|Jackson|Jacksonmartinez123'], ['', '', 'ctm2|Kaijun|Kaijunmartin']]

预期输出:

[['ctm1', 'Jackson', 'Jacksonmartinez123'], ['ctm2', 'Kaijun', 'Kaijunmartin']]

使用csv模块

例如:

import csv

with open("test.txt") as userfile:
    reader = csv.reader(userfile, delimiter="|")
    print(list(reader))

我相信你想要拆分?不脱衣?这是解决方案的核心。

string1 = 'ctm1|Jackson|Jacksonmartinez123'
string2 = string1.split('|')
print(string2)
username = line[line.find("|"):line.find("|")]

line.find("|") 将 return 相同。所以这自然是一个空字符串。

这个解决方案应该有效

user = []

with open("test.txt","r") as userfile: 
     # for each line in test.txt, append id,username and password
     # separate id,username and password by splitting "|"
     for line in userfile.readlines():
          ID = line.split("|")[1]
          username = line.split("|")[2]
          password = line.split("|")[3].rstrip("\n")
          user.append([ID,username,password])
     print(user)

正如其他用户所提到的,我使用了 split 而不是 find

这是我的解决方案,尽管其他的看起来也很不错。不需要额外的模块,并且与您提供的示例文本完全一致。

user = []

with open("test.txt",'r') as userfile:
     for line in userfile.readlines():
          user.append(line.strip().split("|")[1:4])
     print(user)