所以我仍然是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!'我遇到了麻烦,因为列表中这些符号的位置可能因文件而异,所以我不能直接拼接字符串。
有什么建议吗?
答案 0 :(得分: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,"!.!"))