我有这段代码:
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
)
知道发生了什么或如何修复它?
答案 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