【问题标题】:Pythonic way to replace every second comma of string with space用空格替换字符串的每一秒逗号的Pythonic方法
【发布时间】:2016-08-09 17:28:08
【问题描述】:

我有一个如下所示的字符串:

coords = "86.2646484375,23.039297747769726,87.34130859375,22.59372606392931,88.13232421875,24.066528197726857"

我想要的是把它变成这种格式:

coords = "86.2646484375,23.039297747769726 87.34130859375,22.59372606392931 88.13232421875,24.066528197726857"

所以每隔一秒用一个空格替换逗号。有没有一种简单的pythonic方法来做到这一点。

现在我正在尝试使用 split 函数创建一个列表,然后循环遍历该列表。但这似乎并不简单。

【问题讨论】:

  • list(zip(c.split(","), c.split(",")[1:]))[::2],也许?看起来有点丑。

标签: python


【解决方案1】:

首先让我们导入正则表达式模块并定义您的coords 变量:

>>> import re
>>> coords = "86.2646484375,23.039297747769726,87.34130859375,22.59372606392931,88.13232421875,24.066528197726857"

现在,让我们用空格替换每个逗号:

>>> re.sub('(,[^,]*),', r'\1 ', coords)
'86.2646484375,23.039297747769726 87.34130859375,22.59372606392931 88.13232421875,24.066528197726857'

正则表达式(,[^,]*), 查找逗号对。替换文本 r'\1 ' 保留第一个逗号,但将第二个逗号替换为空格。

【讨论】:

    【解决方案2】:

    这类作品:

    >>> s = coords.split(',')
    >>> s
    ['86.2646484375', '23.039297747769726', '87.34130859375', '22.59372606392931', '88.13232421875', '24.066528197726857']
    >>> [','.join(i) for i in zip(s[::2], s[1::2])]
    ['86.2646484375,23.039297747769726', '87.34130859375,22.59372606392931', '88.13232421875,24.066528197726857']
    

    【讨论】:

    • [i + ',' + j for i,j in zip(out, out[1:])]
    【解决方案3】:

    pythonic 的方法是拆分字符串并再次加入,使用交替分隔符:

    from itertools import chain, cycle, izip
    coords = ''.join(chain.from_iterable(izip(coords.split(','), cycle(', '))))
    

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 2013-05-17
      • 2019-07-21
      • 1970-01-01
      相关资源
      最近更新 更多