Pythonic方式用空格替换字符串的每秒逗号

时间:2016-08-09 17:28:09

标签: python

我有一个看起来像这样的字符串:

data

我想要的是将它带到这种格式:

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title='Title'),
  dashboardSidebar(
    sidebarMenu(
      menuItem('Models', tabName='Models',
        menuSubItem('Model1', tabName='Model1'),
        menuSubItem('Model2', tabName='Model2')
      ),
      tags$head(tags$script(HTML('$(document).ready(function() {$(".treeview-menu").css("display", "block");})')))
    )
  ),
  dashboardBody(
    tabItems(
      tabItem(tabName='Model1',
        h1("Model 1"),
        radioButtons('data1', 'Select Data',
          choices=list("Use Old Data"='old', "Use New Data"='new')
        ),
        verbatimTextOutput('out1')
      ),
      tabItem(tabName='Model2',
        h1("Model 2"),
        radioButtons('data2', 'Select Data',
          choices=list("Use Old Data"='old', "Use New Data"='new')
        ),
        verbatimTextOutput('out2')
      )
    )
  )
)

server <- function(input, output, session) {
  output$out1 <- renderPrint(input$data1)
  output$out2 <- renderPrint(input$data2)
}

shinyApp(ui, server)

所以在每隔一个数字中用空格替换逗号。是否有简单的pythonic方法来做到这一点。

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

3 个答案:

答案 0 :(得分:12)

首先,让我们导入正则表达式模块并定义您的>>> 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 '查找逗号对。替换文本Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/fontbox/type1/DamagedFontException 保留第一个逗号,但用空格替换第二个。

答案 1 :(得分:3)

这种作品:

>>> 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']

答案 2 :(得分:1)

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

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