字符串连接在Python中产生错误的输出?

时间:2010-08-19 19:51:16

标签: python string r concatenation

我有这段代码:

filenames=["file1","FILE2","file3","fiLe4"]


def alignfilenames():
    #build a string that can be used to add labels to the R variables.
    #format goal: suffixes=c(".fileA",".fileB")
    filestring='suffixes=c(".'
    for filename in filenames:
        filestring=filestring+str(filename)+'",".'

    print filestring[:-3]
    #now delete the extra characters
    filestring=filestring[-1:-4]
    filestring=filestring+')'
    print "New String"
    print str(filestring)

alignfilenames()

我正在尝试将字符串变量看作这种格式:suffixes=c(".fileA",".fileB".....)但是添加最后的括号不起作用。当我按原样运行此代码时,我得到:

suffixes=c(".file1",".FILE2",".file3",".fiLe4"
New String
)

知道发生了什么或如何修复它?

3 个答案:

答案 0 :(得分:11)

这样做你想要的吗?

>>> filenames=["file1","FILE2","file3","fiLe4"]
>>> c = "suffixes=c(%s)" % (",".join('".%s"' %f for f in filenames))
>>> c
'suffixes=c(".file1",".FILE2",".file3",".fiLe4")'

使用string.join是一种更好的方法,可以将常用分隔符添加到项列表中。它不需要在添加分隔符之前检查是否在最后一个项目上,或者在您尝试剥离最后添加的分隔符的情况下。

此外,您可能需要查看List Comprehensions

答案 1 :(得分:2)

看起来您可能正在尝试使用python编写R脚本,如果您不知道如何在R中执行此操作,这可以是一个快速解决方案。但在这种情况下,R-only解决方案实际上是相当的简单:

R> filenames= c("file1","FILE2","file3","fiLe4")
R> suffixes <- paste(".", tolower(filenames), sep="")
R> suffixes
[1] ".file1" ".file2" ".file3" ".file4"
R> 

答案 2 :(得分:1)

发生的事情是这个切片返回一个空字符串

filestring=filestring[-1:-4]

因为结束是在开始之前。在命令行上尝试以下操作:

>>> a = "hello world"
>>> a[-1:-4]
''

解决方法是改为

filestring=filestring[:-4]+filestring[-1:]

但我认为你真正想要的只是删掉最后三个字符。

filestring=filestring[:-3]

更好的解决方案是使用字符串的join方法sberry2A suggested