如何从py3中的字符串中拆分整数

时间:2018-02-27 00:30:53

标签: python-3.x

我一直致力于使用红外传感器和声波距离传感器的Arduino设置。由于我同时使用这两种方法,因此串口数据需要有来自两个数据集的可识别标签,我使用'厘米'对于声波传感器数据。

我的问题是,我无法弄清楚如何去掉'厘米'来自声波传感器数据的标签:

    if ' cm' in  data:       #used to handle the output from the ultrasonic sensor

    sonicdata = [int(s) for s in s.split() if s.isdigit()] #remove text so we can turn it into an integer

    if 20<sonicdata <40:
        pyautogui.press('playpause')

    if sonicdata<19:
        pyautogui.press('nexttrack')

当我运行这个时,我收到错误消息&#34; AttributeError:&#39; int&#39;对象没有属性&#39; split&#39;&#34; 我很困惑所以请帮助谢谢

所以它只是那个给我一个错误的部分

如何实际从这里获取数据中的整数?

1 个答案:

答案 0 :(得分:0)

对于通用案例,具有split函数的正则表达式可以在这里提供帮助:

integers = [int(i) for i in re.split(
                 '(\d+)', 'measures 40 cm by  20 cm by 10 cm')[1::2]]

使用拆分器模式周围的捕获括号,拆分器本身也包含在结果列表中:

>>> import re
>>> re.split('(\d+)', 'measures 40 cm by  20 cm by 10 cm')
['measures ', '40', ' cm by  ', '20', ' cm by ', '10', ' cm']

所有奇怪的元素。可以使用[1::2]

访问这些内容
>>> re.split('(\d+)', 'measures 40 cm by  20 cm by 10 cm')[1::2]
['40', '20', '10']

最后,实际的字符串需要转换为整数,在表达式周围的列表理解中完成:

>>> [int(i) for i in re.split('(?P<int>\d+)', 'measures 40 cm by  20 cm by 10 cm')[1::2]]
[40, 20, 10]