使用Python解析简单文本文件

1 投票
4 回答
8402 浏览
提问于 2025-04-17 10:15

我是一家论坛的管理员,需要清理注册在论坛上的所有机器人账户。
正如你在下面看到的,我可以通过以下方式列出所有用户:

Username number_of_mssages register_date

举个例子:

- Thurman Valsin0190    0       Sat Jan 14, 2012 5:00 pm
- Rubye Tones01AD   0       Sat Jan 14, 2012 4:59 pm

我需要一个超级简单的Python小程序,能够逐行读取一个文本文件,这样我就可以从上面的字符串中提取出昵称。

- Thurman Valsin0190
- Rubye Tones01AD

这意味着程序需要删除每一行中的“0”以及它后面的所有内容。文本是从一个.txt文件中读取的。
我知道这并不难,但我对Python不是很熟悉。提前谢谢你!

4 个回答

1

为什么不把包含前导空格(或制表符)的0作为分割的关键字,这样可以避免把其他的0也分开呢:

with open("filename.txt", "r") as f:
    for line in f:
        nick = line.split(" 0 ")[0].strip() # OR .split("\t0\t") if those are tabs
        print nick
3

可以考虑使用正则表达式:

import re

pattern = re.compile(r'(.*?)\s+0\s+')
pattern.findall('- Thurman Valsin0190    0       Sat Jan 14, 2012 5:00 pm')[0] 
# - Thurman Valsin0190
3

这其实不是一个关于Python的问题,而是关于正则表达式和字符串解析的问题...

可以说每一行都包含一个昵称、一个制表符和一个0吗?

如果是这样的话,那就应该很简单:

(假设line包含文件中的一行)

nickname = line.split("\t")[0]

撰写回答