2014-10-16 38 views
-1

所以我对python还比较陌生,而且我的数据结构有些麻烦。具体来说,我在这里要做的是在列表中加入字符串。我的代码看起来像这样。 进口重新当索引不明时,在列表中加入字符串

FstFile = open('q1/fst1', 'ru') 
InputFile = open('examples/ex', 'ru') 

def cleanseInput(strVal): 
    return re.sub(r'\"', '', re.sub(r'\'', '', strVal)) 

fstLines =FstFile.readlines() 
#print fstLines 

FstStore = [] 
for item in fstLines: 
    x = item.strip().split('\n') 
    FstStore.append(x[0]) 

AcceptState = FstStore.pop(0) 

#print FstStore 
#print AcceptState 
transitionStates = [] 
for item in FstStore: 
    item = item[1: -1] 
    #print item 
    transitionStates.append(item[0]) 
    item = item[3: -1] 
    #transitionStates.append(item[0]) 
    x = cleanseInput(item) 
    #print x 
    for i in x: 
     transitionStates.append(i) 
    #print i 
#print transitionStates  
new = [] 
for k in transitionStates: 
    #print k 
    if(k != (r' ')): 
     new.append(k) 
for k in range(0, len(transitionStates)): 
    #print transitionStates[k] 
    if transitionStates[k] == '*': 
     #print transitionStates[k] 

print new 

输出我得到这个样子的: '!' [ '0', '1', 'A', 'E', '1', '!' '0','a','b']

我想要做的就是加入'!' 'e''!'成一个单一的元素'!e!'我遇到了麻烦,因为这些符号在列表中的位置可能因文件而异,所以我不能直接拼接字符串。
有什么建议吗?

+1

我们需要实际的规范一些细节你的符号化。订单是否重要? I.E.会把'['!',...,'!',...,'e']'也变成''!!'?这些元素总是独一无二的,I.E.假设只有零个或两个“!”和一个“e”,这是否安全?等等。这个问题的答案很大程度上取决于你的语法规则。 – aruisdante 2014-10-16 16:52:48

+0

所以对于这个具体的任务!只会出现在序列!e !. SO订单确实很重要,但不会有其他事情发生! !!之外!字符串 – jdv12 2014-10-16 16:56:10

回答

0

这里是一个(可能不理想)解决方案

initial_string = "".join(['0', '1', 'a', '!', 'e', '!', '1', '0', 'a', 'b']) 
import re 
def StateMachineValidation(s,pat): 
    return re.match(pat,s) 

def Matcher(s,pat): 
    match_len = len(pat) 
    while s: 
     if StateMachineValidation(s,pat): 
      yield "".join(s[:match_len]) 
      s = s[match_len:] 
     else: 
      yield s[0] 
      s = s[1:] 

print list(Matcher(initial_string,"!.!")) 
+0

嗯我试着实现这个解决方案,但是当我尝试执行时,我得到一个没有重复的错误。我似乎无法弄清楚为什么... – jdv12 2014-10-16 17:20:57

+0

在这段代码中没有任何东西会导致...你需要提供一个例子,让我告诉你为什么...我甚至不知道你的意思是“没有什么可以重复错误“ – 2014-10-16 17:59:31

+0

没关系,我想出了这个问题,这对我很好。谢谢你的帮助! – jdv12 2014-10-16 18:05:09