我的输入文件是:
അദ്ദേഹം --> മന്മോഹന്സിംഗ്
അദ്ദേഹത്തെ --> അദ്ദേഹം --> മന്മോഹന്സിംഗ്
അവന് --> രാമന്
അവള്ക്ക് --> സീതയെ
അവള് --> അവള്ക്ക് --> സീതയെ
അത് --> പൂവ്
അവര് --> അവള്ക്ക് --> സീതയെ , അവന് --> രാമന് , ലക്ഷ്മണന്
അവിടെ --> കോട്ടയത്ത്
അവര്ക്ക് --> മന്മോഹന്സിംഗ് , അവള്ക്ക് --> സീതയെ , ലക്ഷ്മണന് , അവന് --> രാമന്
അവിടെ --> അവിടെ --> കോട്ടയത്ത്
അവന് --> ലക്ഷ്മനനെ
അവനെ --> ലക്ഷ്മണന്
അവള്ക്ക് --> സീതയെ
അവന് --> രാമന്
我想要的输出文件包含:
അദ്ദേഹം --> മന്മോഹന്സിംഗ്
അദ്ദേഹത്തെ --> മന്മോഹന്സിംഗ്
അവന് --> രാമന്
അവള്ക്ക് --> സീതയെ
അവള് --> സീതയെ
അത് --> പൂവ്
അവര് --> സീതയെ,രാമന് ,ലക്ഷ്മണന്
അവിടെ --> കോട്ടയത്ത്
അവര്ക്ക് --> മന്മോഹന്സിംഗ് ,സീതയെ,ലക്ഷ്മണന് ,രാമന്
അവിടെ --> കോട്ടയത്ത്
അവന് --> ലക്ഷ്മനനെ
അവനെ --> ലക്ഷ്മണന്
അവള്ക്ക് --> സീതയെ
അവന് --> രാമന്
即,如果有超过1' - >'字符,线需要修改。所以我的代码从列表中的位置2开始,因为第一个' - >'需要。并检查列表中的当前和下一个项目。但它不起作用。 我的代码是:
fq = codecs.open('resolvedanaphora.txt', encoding='utf-8')
lines = fq.readlines()
fq.close()
for line in lines:
if ',' in line:
words=[]
words=line.split()
for i in range(2,len(words)):
if '-->' in words[i+1]:
print 'yes'
words[i]=''
words[i+1]=''
for w in words:
fa.write(w)
while len(words) > 0 : words.pop()
else:
fa.write(line)
fa.write('\n')
fa.close()
我有一个空白的输出文件。终端显示错误。错误是
if '-->' in words[i+1]:
IndexError: list index out of range
答案 0 :(得分:1)
import codecs
with codecs.open('out.txt', 'w') as fa:
with open('in.txt') as fhandle:
for line in fhandle:
i = line.find('-->') + 3
line = line[:i] + re.sub(r'\b\w+\s*-->', '', line[i:])
fa.write(line)
你的角色设定对我不起作用。所以,我尝试了输入:
a-->b
def-->hij-->klm
123-->456 ,789-->qwe,rty, uio-->pas
输出结果为:
a-->b
def-->klm
123-->456 ,qwe,rty, pas
上述代码的工作原理是查找-->
的第一次出现。所有文本(包括第一次出现的-->
)都保持不变。在随后的文本中,进行了替换:删除了-->
之后出现的任何单词。然后将生成的行写入文件。
虽然这里无害,但file
是保留字。因此,新代码使用fhandle
代替file
。
line.split()
在空格上拆分线。由于(a)逗号,并且(b)-->
字符并不总是被空格包围,因此对您的输入不起作用。
循环for w in words: fa.write(w)
将所有单词串起来,没有空格。
答案 1 :(得分:0)
而不是那种方法试试这个替换所有 - >除了第一次出现
for s in lines:
substr = "-->"
try:
first_occurrence = s.index(substr) + len(substr)
except ValueError:
pass
else:
s = s[:first_occurrence] + re.sub(r'\b\w+\s*-->', '', s[first_occurrence:])
print s
input
a-->b
b-->c,b-->d,b-->e
c->d
output
a-->b
b-->c,d,e
c-->d
答案 2 :(得分:0)
split
在空格上分裂。
>>> line = 'അവര്-->അവള്ക്ക്-->സീതയെ,അവന്-->രാമന് ,ലക്ഷ്മണന്'
>>> line.split()
['അവര്-->അവള്ക്ക്-->സീതയെ,അവന്-->രാമന്', ',ലക്ഷ്മണന്']
您可能希望基于逗号进行拆分,然后根据' - >'进行拆分。如果您获得两个以上的元素,请保留第一个和最后一个元素,然后加入' - >'。
>>> line.split(',')
['അവര്-->അവള്ക്ക്-->സീതയെ', 'അവന്-->രാമന്', 'ലക്ഷ്മണന്']
我不知道你想对其他元素做什么,但我们只看第一个子元素。
>>> sub = 'അവര്-->അവള്ക്ക്-->സീതയെ'
>>> links = sub.split('-->')
>>> links
['അവര്', 'അവള്ക്ക്സീ', 'തയെ']
>>> if len(links) > 2:
... collapsed = [links[0], links[-1]]
>>> collapsed
['അവര്', 'തയെ']
我们可以使用' - >'加入数组中的元素。将它们分开:
>>> link = '-->'.join(collapsed)
>>> link
'അവര്-->തയെ'
如果您想加入其他元素:
>>> ' ,'.join([link, 'അവന്-->രാമന്', 'ലക്ഷ്മണന്'])
'അവര്-->തയെ ,അവന്-->രാമന് ,ലക്ഷ്മണന്'
答案 3 :(得分:0)
我得到了正确的输出。我将研究上面给出的答案。我的代码如下。
import codecs
fq = codecs.open('resolvedanaphora.txt', encoding='utf-8')
lines = fq.readlines()
fq.close()
fa = codecs.open('resolvedana.txt', 'w')
for i in lines:
words=i.split()
for i in range(2,len(words)):
if words[i]=='-->':
words[i]=''
words[i-1]= ''
for w in words:
if w!='':
fa.write(w.encode('UTF-8'))
fa.write(' ')
fa.write('\n')
fa.close()
如果列表中的项目是“ - >”然后将当前项目和前一项目替换为''。由于''不需要在输出文件中写入,因此会被忽略。
输出结果为:
അദ്ദേഹം --> മന്മോഹന്സിംഗ്
അദ്ദേഹത്തെ --> മന്മോഹന്സിംഗ്
അവന് --> രാമന്
അവള്ക്ക് --> സീതയെ
അവള് --> സീതയെ
അത് --> പൂവ്
അവര് --> സീതയെ , രാമന്
അവിടെ --> കോട്ടയത്ത്
അവര്ക്ക് --> സീതയെ , രാമന്
അവിടെ --> കോട്ടയത്ത്
അവന് --> ലക്ഷ്മനനെ
അവനെ --> ലക്ഷ്മണന്
അവള്ക്ക് --> സീതയെ
അവന് --> രാമന്