我是论坛的主持人,我需要修剪那些在那里注册的机器人 如下所示,我可以通过以下方式列出所有用户:
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不是很了解。 提前谢谢!
答案 0 :(得分:3)
这不是一个python问题,它是一个正则表达式/字符串解析问题......
说每行包含昵称,制表符,然后是0?
是否正确然后它应该如下:
(假设行包含文件中的一行)
nickname = line.split("\t")[0]
答案 1 :(得分: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
答案 2 :(得分:1)
为什么不拆分为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 :(得分:0)
通过拆分" 0 "
字符串进行解析,例如,extract-nickname.py:
#!/usr/bin/env python
import fileinput
for line in fileinput.input():
nick, sep, rest = line.partition(" 0 ")
if sep:
print(nick.strip())
它假定昵称不能包含" 0 "
,并且前导/尾随空格不是昵称的一部分。否则,如果标签字符是line.partition("\t")
和Username
之间的分隔符,则可以使用number_of_mssages
。
$ python extract-nickname.py log.txt
- Thurman Valsin0190
- Rubye Tones01AD
如果您需要更改文件,则可以将inplace=True
参数指定为fileinput.input()
函数。