python - 抓取一行的一部分直到一个空白
问题描述
我有一行看起来像这样的文本:
2018-05-22 00:00:00 STATUS ERROR_CODE /home/etm124/script.py ANOTHER_MSG
我想要做的是获取脚本名称。我不能在空白处拆分,因为STATUS
可能不止一个词,但是脚本值始终位于位置 [411] 中line
。我目前正在尝试做类似的事情:
with open(my_log, 'r') as fp:
for line in fp:
if line[45] == '7': #ERROR_CODE
print line[411: {white_space?}]
解决方案
您可以使用str.find
偏移量:
offset = 411
line[offset:line.find(" ",offset)]
它很快(只有一片),但问题是:如果没有空间,你会得到-1
结果,你会失去 1 个字符。
另一种方法是切片然后拆分/分区(即使之后没有空间也可以):
line[411:].split()[0]
一些更复杂的代码来处理“缺失的空间”并且只执行 1 个切片和 1 个查找将是:
offset = 411
spacepos = line.find(" ",offset)
line[offset:spacepos if spacepos != -1 else None])
所以如果find
返回-1,则切片到字符串的末尾。
推荐阅读
- c++ - Atoi 转换后的 String-> int 的不同输出
- c# - NHibernate session.Flush() 不起作用并且没有错误报告
- c - 指针星位置
- java - servlet和html之间的交互
- php - php用我的sqli查询而不是对象数组创建数组
- assembly - 在 mips 汇编程序中读取空格分隔的整数
- raspberry-pi - 树莓派摄像头模组V2如何设置焦距?
- php - 如何使用 php ArrayCachePool?
- javascript - 将对象的第一行重组为 javascript 中的名称
- android - Retrofit 为在后台运行的调用返回 HTTP 401