求高手指点。。字符串处理问题。我需要将字符串 str 5-3:5-1-3,5-4:5-1-4,DATA,1-2:2,1-3:3, 转换成两个
求高手指点。。字符串处理问题。
我需要将字符串 str = "5-3:5-1-3,5-4:5-1-4,DATA,1-2:2,1-3:3," 转换成两个字典,一个是DATA前面的,一个是DATA后面的,求高手给出函数代码实现,非常感谢。
[最优解释]
没限定语言,我用Python吧。字典,不明白,我转成两个字符串吧。
str = "5-3:5-1-3,5-4:5-1-4,DATA,1-2:2,1-3:3,"
str2 = "DATA"
pos = str.find( str2 )
strFront = str[:pos]
strBack = str[pos + len( str2 ):]
print strFront
print strBack
[其他解释]大概了解了两个字典了。
str = "5-3:5-1-3,5-4:5-1-4,DATA,1-2:2,1-3:3,"
str2 = "DATA"
strDirs = []
pos = str.find( str2 )
strDirs.append( str[:pos] )
strDirs.append( str[pos + len( str2 ):] )
Dirs = []
Dirs.append( {} )
Dirs.append( {} )
index = 0
for strKVs in strDirs :
while True:
pos = strKVs.find( "," )
if pos != -1 :
strKV, strKVs = strKVs[:pos], strKVs[pos + 1:]
pos = strKV.find( ":" )
if pos != -1 :
key = strKV[:pos]
value = strKV[pos + 1:]
Dirs[index][key] = value
else :
break
index += 1
print( Dirs[0] )
print( Dirs[1] )
[其他解释]是用python实现,你的答案对我非常有用,非常感谢,现在还需要将strFront和strBack转换成字典。。。
[其他解释]str = "5-3:5-1-3,5-4:5-1-4,DATA,1-2:2,1-3:3,"
str2 = "DATA"
strDirs = []
pos = str.find( str2 )
strDirs.append( str[:pos] )
strDirs.append( str[pos + len( str2 ):] )
Dirs = []
Dirs.append( {} )
Dirs.append( {} )
index = 0
for strKVs in strDirs :
while True:
pos = strKVs.find( "," )
if pos != -1 :
strKV, strKVs = strKVs[:pos], strKVs[pos + 1:]
pos = strKV.find( ":" )
if pos != -1 :
key, value = strKV[:pos], strKV[pos + 1:]
Dirs[index][key] = value
else :
break
index += 1
print Dirs[0]
print Dirs[1]
看下行不行?
[其他解释]这样确实保存到了字典中,非常犀利,但是为什么保存到字典里面后,与原字符串的顺序变了!
[其他解释]还是反的,
>>> print Dirs[0]
{'5-4': '5-1-4', '5-3': '5-1-3'}
>>> print Dirs[1]
{'1-3': '3', '1-2': '2'}
[其他解释]字典不保证顺序的。
[其他解释]我们已经得到strFront和strBack字符串了,好像有一个什么eval()函数,
[其他解释]>>> aa = "{'5-4': '5-1-4'}"
>>> bb = eval( aa )
>>> bb
{'5-4': '5-1-4'}
>>> type( bb )
<type 'dict'>
>>>
加上引号和花括号可以,但缺少的话,不知道怎样转换?
论坛还支持del和code=asm[其他解释]strKV,?strKVs?=?strKVs[:pos],?strKVs[pos?+?1:]
pos?=?strKV.find(?":"?)
这两句话应该保证了 从左到右查找 “:”号呀,不知道为什么
for key in Dirs[0]:
print key,":", Dirs[0][key]
打印出来还是乱的。。。
[其他解释]是的,字典不保证顺序。你试试看这个输出什么?
dict1 = {}
dict1["a"] = 1
dict1["b"] = 2
dict1["c"] = 3
dict1["d"] = 4
dict1["e"] = 5
for key in dict1 :
print key, ": ", dict1[key]
[其他解释]哦,这样子,鄙视自己的无知。。。