在Python中清理一段文本
我对Python还相当陌生,但我想通过编写一些我将要使用的特性的脚本来开始学习。我有一些文本是在TeamFortress 2的控制台中键入“status”时检索到的。我想实现的是,我想将下面的文本转换成只有在Python中清理一段文本,python,compare,steam,Python,Compare,Steam,我对Python还相当陌生,但我想通过编写一些我将要使用的特性的脚本来开始学习。我有一些文本是在TeamFortress 2的控制台中键入“status”时检索到的。我想实现的是,我想将下面的文本转换成只有STEAM\u X:X:XXXXXXXX的文本,这是Steam64 ID # userid name uniqueid connected ping loss state # 31 "Atonement -Ai-" STEAM_
STEAM\u X:X:XXXXXXXX
的文本,这是Steam64 ID
# userid name uniqueid connected ping loss state
# 31 "Atonement -Ai-" STEAM_0:1:27464943 00:48 103 0 active
# 10 "?loop?" STEAM_0:0:31072991 40:48 62 0 active
# 11 "爱 -Ai-" STEAM_0:0:41992530 40:46 68 0 active
# 12 "MrKateUpton -Ai-" STEAM_0:1:10894538 40:25 81 0 active
# 13 "Tacet -Ai-" STEAM_0:1:52131782 39:59 83 0 active
# 14 "CottonBonbon-Ai-" STEAM_0:1:47812003 39:39 51 0 active
# 15 "belt -Ai-" STEAM_0:1:4941202 38:43 123 0 active
# 16 "boutros :3" STEAM_0:0:32271324 38:21 65 0 active
# 17 "[tilt] Xikkari" STEAM_0:1:41148798 38:14 92 0 active
# 24 "ElenaWitch" STEAM_0:0:17495028 31:30 73 0 active
# 19 "[tilt] Batcan #boutros" STEAM_0:1:41205650 38:10 63 0 active
# 20 "[?l??]whatupmydiggas" STEAM_0:1:50559125 37:58 112 0 active
# 21 "[tilt] musicman" STEAM_0:1:37758467 37:31 89 0 active
# 22 "Jack Frost" STEAM_0:0:24206189 37:28 90 0 active
# 28 "[tilt-sub]deaf ears #best safet" STEAM_0:1:29612138 19:05 94 0 active
# 25 "? notez ?ai" STEAM_0:1:29663879 31:23 113 0 active
# 27 "-Ai- Lord English" STEAM_0:1:44114633 24:08 116 0 active
# 29 "1.prototypes" STEAM_0:0:42256202 17:41 83 0 active
# 30 "SourceTV // name for SourceTV" BOT active
# 32 "PUT ME IN COACH" STEAM_0:1:48004781 00:36 173 0 spawning
Python中是否有执行以下算法的内置函数
For all that is not (!) Steam_X:X:XXXXXXXX, delete/remove.
我在谷歌上搜索了相当多的内容,但没有什么具体的内容。如果有人能让我开始使用内置Python函数,我将非常感谢开始编写代码
另外,输出是这样的
STEAM_0:1:27464943
STEAM_0:0:31072991
STEAM_0:1:10894538
etc
etc
对于正则表达式来说,这听起来很简单。假设它们总是这样的数字:
>>> import re
>>> with open('/tmp/spam.txt') as f:
... for steam64id in re.findall(r'STEAM_\d:\d:\d+', f.read()):
... print steam64id
...
STEAM_0:1:27464943
STEAM_0:0:31072991
STEAM_0:0:41992530
STEAM_0:1:10894538
STEAM_0:1:52131782
STEAM_0:1:47812003
STEAM_0:1:4941202
STEAM_0:0:32271324
STEAM_0:1:41148798
STEAM_0:0:17495028
STEAM_0:1:41205650
STEAM_0:1:50559125
STEAM_0:1:37758467
STEAM_0:0:24206189
STEAM_0:1:29612138
STEAM_0:1:29663879
STEAM_0:1:44114633
STEAM_0:0:42256202
STEAM_0:1:48004781
删除行的通常方法不是从原始文件中删除行,而是将要保留的行打印到新文件中(然后,如果处理成功,还可以选择将其复制到原始文件中)。对于正则表达式来说,这听起来很简单。假设它们总是这样的数字:
>>> import re
>>> with open('/tmp/spam.txt') as f:
... for steam64id in re.findall(r'STEAM_\d:\d:\d+', f.read()):
... print steam64id
...
STEAM_0:1:27464943
STEAM_0:0:31072991
STEAM_0:0:41992530
STEAM_0:1:10894538
STEAM_0:1:52131782
STEAM_0:1:47812003
STEAM_0:1:4941202
STEAM_0:0:32271324
STEAM_0:1:41148798
STEAM_0:0:17495028
STEAM_0:1:41205650
STEAM_0:1:50559125
STEAM_0:1:37758467
STEAM_0:0:24206189
STEAM_0:1:29612138
STEAM_0:1:29663879
STEAM_0:1:44114633
STEAM_0:0:42256202
STEAM_0:1:48004781
删除行的常用方法不是将其从原始文件中删除,而是将要保留的行打印到新文件中(然后,如果处理成功,可以选择将其复制到原始文件中)。Hi。谢谢你的快速回复!/tmp/spam.txt是临时文件还是此脚本读取的文件扩展名?我刚刚将您的字符串复制到一个名为
/tmp/spam.txt
的文件中。当然,您的文件名可能不同(或者您可能根本不需要从文件中读取),这也假设没有任何用户被命名为STEAM\u 0:0:12345678
(例如,奇怪的恶意用户)您非常棒。我将使用它,从中学习更多,研究更多。谢谢你,维姆!!Hey wim:我感兴趣的是通过终端获取输入,这意味着,我不会从文件(/Users/name/Desktop)读取脚本,而是通过输入读取它(有点像C中的scanf,因为我就是从那里来的)。我知道使用sys.argv[1]并将变量声明为txt,但在将其集成到脚本中时,我几乎迷失了方向。你有什么想法吗?你好。谢谢你的快速回复!/tmp/spam.txt是临时文件还是此脚本读取的文件扩展名?我刚刚将您的字符串复制到一个名为/tmp/spam.txt
的文件中。当然,您的文件名可能不同(或者您可能根本不需要从文件中读取),这也假设没有任何用户被命名为STEAM\u 0:0:12345678
(例如,奇怪的恶意用户)您非常棒。我将使用它,从中学习更多,研究更多。谢谢你,维姆!!Hey wim:我感兴趣的是通过终端获取输入,这意味着,我不会从文件(/Users/name/Desktop)读取脚本,而是通过输入读取它(有点像C中的scanf,因为我就是从那里来的)。我知道使用sys.argv[1]并将变量声明为txt,但在将其集成到脚本中时,我几乎迷失了方向。你有什么想法吗?