首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

求。字符串处理有关问题

2012-12-26 
求高手指点。。字符串处理问题。我需要将字符串 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吧。字典,不明白,我转成两个字符串吧。Python code?1234567str = "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 ):]pr……


引用:
没限定语言,我用Python吧。字典,不明白,我转成两个字符串吧。Python code?1234567str = "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 ):]pr……


是用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]
看下行不行?
[其他解释]
引用:
大概了解了两个字典了。
Python code?1234567891011121314151617181920212223242526str = "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] )……


这样确实保存到了字典中,非常犀利,但是为什么保存到字典里面后,与原字符串的顺序变了!
[其他解释]
引用:
Python code?12345678910111213141516171819202122232425str = "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(……

还是反的,
>>> 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
[其他解释]
引用:
Assembly code?1234567>>> 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]

[其他解释]
引用:
引用:……打印出来还是乱的……是的,字典不保证顺序。你试试看这个输出什么?Python code?123456789dict1 = {}dict1["a"] = 1dict1["b"] = 2dict1["c"] = 3dict1["d"] = 4dict1["e"] = 5for key in dict1 :    print ke……

哦,这样子,鄙视自己的无知。。。

热点排行