Python中的字符串操作:引号和撇号

2024-10-02 10:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在python中遇到了一个问题:我试图创建一个字符串,我可以使用操作系统关于python。我的目标是对数量可变的输入文件使用此操作:

os.system('gdal_calc.py -A {0} -B {1} -C {2} --outfile={4} --calc="(1-A)(1-B)(1-C)" '.format(File1, File2, File3, outputfile))

我的函数是这样的:

def Mergefilesforoperation(Inputfiles= None):

    ABC = ["A","B","C","D","E","F","G","H","I","J","K",
    "L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
    partstring = []

    for i in range(len(Inputfiles)-1):
        partstring.append(" -" + ABC[i] +  " '" + Inputfiles[i] + "'")


    wholestring = "".join(partstring)  
    outputfile = 'outputfile.tif'
    operationstring = "gdal_calc.py" + wholestring + " --outfile= {0}".format(outputfile) + ' --calc="(1-A)*(1-B)*(1-C)*(1-D)"'

    return wholestring, operationstring

但当我把它还给你的时候:

File1 = '/home/File1.tif' File2 = '/home/File2.tif' File3 = '/home/File3.tif'

Mergefilesforoperation(Inputfiles=[File1, File2, File3]) 

它提供以下输出:

Wholestring = " -A '/home/File1.tif' -B '/home/File2.tif' -C '/home/File3.tif'"

operationstring = 'gdal_calc.py -A \'/home/File1.tif\' -B \'/home/File2.tif\' -C \'/home/File3.tif\' --outfile= outputfile.tif --calc="(1-A)(1-B)(1-C)"')

如何去掉“operationstring”中字母表后面的\符号?你知道吗


Tags: pyformathomecalcfile1outfilefile2gdal
2条回答

动手吧:

String = ""
for i in range(len(Inputfiles)-1):
    String +=" -" + ABC[i] +  " '" + Inputfiles[i] + "'"

而不是:

 for i in range(len(Inputfiles)-1):
        partstring.append(" -" + ABC[i] +  " '" + Inputfiles[i] + "'")

和支付与报价attention,我们可以混合报价,但它是如此清楚地遵循一种方法。你知道吗

操作字符串=“gdal_计算py“+批发字符串+”outfile={0}“。格式(outputfile)+'计算=“(1-A)(1-B)(1-C)*(1-D)”'

操作字符串=“gdal_计算py“+批发字符串+”outfile={0}“。格式(outputfile)+计算='(1-A)(1-B)(1-C)*(1-D)'

有了这些变化,它可能会起作用。我试过了。你知道吗

要做到这一点,你必须将双引号括在单引号内,而不是以其他方式。你知道吗

尽管在大多数场景中,这两种方法的影响应该是相同的,但这是一个关键场景,因为在Python中字符串的内部表示方式很重要。你知道吗

>>> os.system('dir "C:\\Program Files"')
 Volume in drive C has no label.
 Volume Serial Number is 26BC-5144

 Directory of C:\Program Files

03-10-2016  12:41    <DIR>          .
03-10-2016  12:41    <DIR>          ..
18-07-2016  12:29    <DIR>          Bonjour


>>> os.system("dir 'C:\\Program Files'")
The filename, directory name, or volume label syntax is incorrect.
1

还要注意字符串内部表示方式的不同

>>> a
"dir 'C:\\Program Files'"
>>> a.__repr__()
'"dir \'C:\\\\Program Files\'"'
>>> a = 'dir "C:\\Program Files"'
>>> a.__repr__()
'\'dir "C:\\\\Program Files"\''

相关问题 更多 >

    热门问题