我目前正在尝试将特定字符串切片为部分,但总是摆脱索引错误。
字符串是:
columnData = "001.001.000.100.000.000.000"
myClassInstance = MyClass(
param1 = columnData[0:3],
param2 = columnData[4:3],
param3 = columnData[8:3],
param4 = 0,
param5 = columnData[12:3],
param6 = columnData[16:3],
param7 = columnData[20:3],
param8 = columnData[24:3]
)
每当它尝试设置param8时,我都会出现索引错误。
然后我尝试将切片放入文件中以查看错误的位置并尝试:
f = open("TestmyTset.txt","w")
f.write(columnData)
f.write("\nparam1: ")
f.write(columnData[0:3])
f.write("\nparam2r: ")
f.write(columnData[4:3])
f.close();
但param2从未打印到文件中。
输出结果为:
001.001.000.100.000.000.000
param1: 001
param2:
所以我的问题在于我的错误是我一次又一次地尝试而不是找到它(实际上每个切片都应该是字符串中的一个。)
正如所要求的那样,预期产出将是:
param1 = "001"
param2 = "001" (the 2nd 001 in the original string)
param3 = "000"
param4 = "0"
param5 = "100"
....
答案 0 :(得分:3)
我认为你要做的是:
columnData [4:7] columnData [8:11] 等
我觉得最好还是
split_column_data = columnData.split('。')
在字符串中的每个.
处拆分字符串。并返回一个列表
>>>
print split_column_data['001','001','000',...]
答案 1 :(得分:2)
slice()
states的文档:
slice([start], stop[, step])
返回表示
range(start, stop, step)
指定的索引集的 slice 对象。 start 和 step 参数默认为None
。切片对象具有只读数据属性 start , stop 和 step ,它们仅返回参数值(或其默认值)。他们没有其他明确的功能;但是它们被Numerical Python和其他第三方扩展使用。使用扩展索引语法时也会生成切片对象。例如:a[start:stop:step]
或a[start:stop, i]
。
换句话说,你想要的是:
param2 = columnData[4:7]
param3 = columnData[8:11]
...
答案 2 :(得分:1)
在python中切片如下:[start_index:end_index:step_size] - 换句话说,当你访问columnData[4:3]
时,你试图做的是从索引4读到索引3 - 这是没有意义的。
您需要阅读columnData[4:7]
以获得所需的结果。
我还建议您查看str.split
,因为columnData.split('.')
会以更加轻松的方式为您提供所需内容。
答案 3 :(得分:1)
columnData = "001.001.000.100.000.000.000"
param1,param2,param3,param5,param6,param7,param8 = columnData.split('.')
param4 = 0
print ("param1 :{} , param2 :{}, param3 :{}, param4: {}, param5 :{}, param6 :{}, param7 :{},param8 :{}").\
format(param1, param2, param3, param4, param5, param6, param7, param8)
Output:
param1 :001 , param2 :001, param3 :000, param4: 0, param5 :100, param6 :000, param7 :000,param8 :000
答案 4 :(得分:1)
据我了解你的问题,似乎你想要切一个字符串
columnData = "001.001.000.100.000.000.000"
myClassInstance = MyClass(
param1 = columnData[0:3],
param2 = columnData[4:3],
param3 = columnData[8:3],
param4 = 0,
param5 = columnData[12:3],
param6 = columnData[16:3],
param7 = columnData[20:3],
param8 = columnData[24:3]
)
必须设置
param1 : 001
param2 : 001
param3 : 000
param4 : 0
param5 : 100
param6 : 000
param7 : 000
param8 : 000
现在据我所知
a = "123456789" to 123
print a[0:3]
print a[3:6]
.....
将给出
123
456
....
因此,对于您的示例,您需要设置
columnData = "001.001.000.100.000.000.000"
myClassInstance = MyClass(
param1 = columnData[0:3],
param2 = columnData[4:7],
param3 = columnData[8:11],
param4 = 0,
param5 = columnData[12:15],
param6 = columnData[16:19],
param7 = columnData[20:23],
param8 = columnData[24:27]
)
它会工作:)祝你好运!