python字符串描述错误的_Python字符串错误字符

让我首先说我试图创建一个最小的例子,但无法复制结果。我尽力不把它的代码转储到这里,但我不确定是否有另一种方式来说明问题。我正在编写一个类来将我的应用程序的数据输出到特定的格式,并且我在代码中得到了错误的结果。

我试图输出的格式应该如下所示:

节点式“节点类型”“名称”

“attribute-type attribute-name”[value]

如果该属性链接到另一个节点

“refrence attribute-type attribute-name”[“nodename:output-attribute-name”]

例:

Bxdf "PxrDisney" "7fcfd465-87c3-4092-98b9-b67d1655bc32"

"color baseColor" [0.20.50.8]

"color emitColor" [0.00.00.0]

"float subsurface" [0]

"reference color subsurfaceColor" ["a3bb37f2-dbb8-407b8a1ac93822ebef7c:resultRGB"]

"float metallic" [0]

"float specular" [.5]

"float specularTint" [0]

"float roughness" [.25]

"float anisotropic" [0]

"float sheen" [0]

"float sheenTint" [.5]

"float clearcoat" [0]

"float clearcoatGloss" [1]

"float presence" [1]

"int inputAOV" [0]

Pattern "PxrHSL" "a3bb37f2-dbb8-407b-8a1a-c93822ebef7c"

"color inputRGB" [0.00.00.0]

"float hue" [0.0]

"float saturation" [1.0]

"float luminance" [1.0]我得到的结果是这样的:

('Bxdf "PxrDisney" "7fcfd465-87c3-4092-98b9-b67d1655bc32" \n "color baseColor" [0.20.50.8] \n "color emitColor" [0.00.00.0] \n "float subsurface" [0] \n "reference color subsurfaceColor"', '["a3bb37f2-dbb8-407b-8a1a-c93822ebef7c:resultRGB"] \n ')"float metallic" [0]

"float specular" [.5]

"float specularTint" [0]

"float roughness" [.25]

"float anisotropic" [0]

"float sheen" [0]

"float sheenTint" [.5]

"float clearcoat" [0]

"float clearcoatGloss" [1]

"float presence" [1]

"int inputAOV" [0]

Pattern "PxrHSL" "a3bb37f2-dbb8-407b-8a1a-c93822ebef7c"

"color inputRGB" [0.00.00.0]

"float hue" [0.0]

"float saturation" [1.0]

"float luminance" [1.0]它看起来像是在字符串中输出特殊字符和额外项目,直到有另一个节点的引用。如果我链接到另一个属性让我们说basecolor它只会给出错误的结果,直到basecolor。如果根本没有连接,就没有问题。为什么字符串会产生这种行为?这是有问题的课程。这个类需要一个我经过的节点对象数组。

#This will handel the export of the RIB contaning all the shader calls

class exporter ():

nodes = None

dicNodes = {}

outStream = []

#Method Two: Use shader as a starting point

#Find the shader

#go through each attribute on the shader

#if connected check attrs on connected node

def __init__(self, incomenodes):

self.nodes = incomenodes

dicNodes = {}

outStream = []

#create a dic using nids as keys

for node in self.nodes:

self.dicNodes[str(node.nid)] = node

#Run Export Command for each shader

x = 0

for node in self.nodes:

print str(node.nodeType.nType)

if str(node.nodeType.nType) == 'bxdf':

self.streamMe(node)

target = open('/home/jspada20/outStream.RIB', 'w')

print 'JAMES! There are ', len(self.outStream), 'items in the out stream'

for line in self.outStream:

target.write(line)

print line

target.close()

def streamMe(self, node):

#Layout for the header of a node call is....

#Pattern "PxrThinFilm" "PxrThinFilm1"

#Bxdf "PxrDisney" "PxrDisney1"

#{Type} "{Identifyer}" "{Name/UID}"

moreNodes = []

#need to fix lower case letters comming in from XML source

nodefunction = None

if str(node.nodeType.nType[0]) == 'p':

nodefunction = 'Pattern'

elif str(node.nodeType.nType[0]) == 'b':

nodefunction = "Bxdf"

else:

nodefunction = str(node.nodeType.nType)

self.outStream.append(nodefunction + ' "' + str(node.nodeType.nName) + '" ' + '"' + str(node.nid) + '" \n ')

for attr in node.inputs:

#Check to see if it is connected

#if not connected:

if attr.currentConnectedNode is None:

#Check to see what type the value is. This will govern the export scheme

if str(attr.argType) == "int":

#print '"'+ str(attr.argType), attr.name + '" [' + str(attr.value) + ']'

self.outStream[len(self.outStream) - 1] = self.outStream[len(self.outStream) - 1] + '"' + str(attr.argType) + " " + attr.name + '" [' + str(attr.value) + '] \n '

elif str(attr.argType) == "float":

if str(attr.value[len(str(attr.value))-1]) == '.':

outVal = str(attr.value) + '0'

else:

outVal = str(attr.value)

#print '"'+ str(attr.argType), attr.name + '" [' + outVal + ']'

self.outStream[len(self.outStream) - 1] = str(self.outStream[len(self.outStream) - 1]) + '"' + str(attr.argType) + " " + attr.name + '" [' + str(attr.value) + '] \n '

elif str(attr.argType) == "color":

#print '"'+ str(attr.argType), attr.name + '" [' + str(attr.value.r), str(attr.value.g), str(attr.value.b) + ']'

self.outStream[len(self.outStream) - 1] = str(self.outStream[len(self.outStream) - 1]) + '"' + str(attr.argType) + " " + attr.name + '" [' + str(attr.value.r) + str(attr.value.g) + str(attr.value.b) + '] \n '

elif str(attr.argType) == "string":

#print '"'+ str(attr.argType), attr.name + '" ["' + attr.value + '"]'

self.outStream[len(self.outStream) - 1] = str(self.outStream[len(self.outStream) - 1]) + '"' + str(attr.argType) + " " + attr.name + '" [' + str(attr.value) + '] \n '

else:

self.outStream[len(self.outStream) - 1] = str(self.outStream[len(self.outStream) - 1]) + '"reference ' + str(attr.argType) + " " + attr.name + '"', '["' + str(attr.currentConnectedNode.nid) + ':' + attr.currentConnectedOutput.name + '"] \n '

moreNodes.append(str(attr.currentConnectedNode.nid))

for ids in moreNodes:

self.streamMe(self.dicNodes[ids])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值