为了账号安全,请及时绑定邮箱和手机立即绑定

Python 将三行 .split() 合并为一行?

Python 将三行 .split() 合并为一行?

慕标5832272 2023-08-22 15:13:41
我有这段代码,我希望可以将三个分割命令组合成一行,但我不知道如何组合:from __future__ import print_function       # Must be first importimport subprocess32 as spdef get_mouse_coordinates():    ''' Get mouse co-ordinates with xdotool:            $ xdotool getmouselocation            x:4490 y:1920 screen:0 window:65011722    '''    command_line_list = ['xdotool', 'getmouselocation']    pipe = sp.Popen(command_line_list, stdout=sp.PIPE, stderr=sp.PIPE)    text, err = pipe.communicate()              # This performs .wait() too    print("returncode of subprocess:",pipe.returncode)    if text:        x, y, z = text.split(' ',2)             # Grab 'x:9999' 'y:9999' 'junk'        x_ret = x.split(':')[1]                 # Grab right of 'x:9999'        y_ret = y.split(':')[1]                 # Grab right of 'y:9999'        print("standard output of subprocess:")        print(text,'x-offset:',x_ret,'y-offset:',y_ret)        return x_ret, y_ret    if err:        print("standard error of subprocess:")        print(err)        return 100, 100可能非常明显,但以下是三行代码:x, y, z = text.split(' ',2)             # Grab 'x:9999' 'y:9999' 'junk'x_ret = x.split(':')[1]                 # Grab right of 'x:9999'y_ret = y.split(':')[1]                 # Grab right of 'y:9999'如果您好奇,请在终端中输出:returncode of subprocess: 0standard output of subprocess:x:3400 y:558 screen:0 window:23073340 x-offset: 3400 y-offset: 558
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

一种方法是使用正则表达式。本质上,您只是想提取数字,因此模式非常简单:


    import re

    

    x, y, screen, window = re.findall("[0-9]+", text)

请注意,如果数字可以为负数,您将需要一个稍长的模式(但似乎在您的情况下,它们不会):


    import re

    

    x, y, screen, window = re.findall("[-+]?[0-9]+", text)

正则表达式模块的文档:https ://docs.python.org/3/library/re.html


您还可以使用列表理解:


    x, y, screen, window = [tok.split(":")[1] for tok in text.split(" ")]


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 1523 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信