Python 在文件中的行中找到一个单词并将其拆分为两行

Python 在文件中的行中找到一个单词并将其拆分为两行,python,list,file,Python,List,File,我的输入文件(i.txt)如下所示: പ്രധാനമന്ത്രി മന്‍മോഹന്‍സിംഗ് നാട്ടില്‍ എത്തി . അദ്ദേഹം മലയാളി അല്ല കാരണം അദ്ദേഹത്തെ പറ്റി പറയാന്‍ വാക്കുകല്ളില്ല . 我的连接词在列表中: connectives=['കാരണം','അതുകൊണ്ട്‌ ','പക്ഷേ','അതിനാല്‍','എങ്കിലും','എന്നാലും','എങ്കില്‍','എങ്കില്‍

我的输入文件(i.txt)如下所示:

പ്രധാനമന്ത്രി മന്‍മോഹന്‍സിംഗ്  നാട്ടില്‍ എത്തി  .  
അദ്ദേഹം മലയാളി അല്ല  കാരണം അദ്ദേഹത്തെ പറ്റി പറയാന്‍  വാക്കുകല്ളില്ല . 
我的连接词在列表中:

connectives=['കാരണം','അതുകൊണ്ട്‌ ','പക്ഷേ','അതിനാല്‍','എങ്കിലും','എന്നാലും','എങ്കില്‍','എങ്കില്‍പോലും',
'എന്നതുകൊണ്ട്‌ ','എന്ന']  
我想要的输出是(outputfile.txt):

如果有两个连接词,就按此分开。我的代码是:

fr = codecs.open('i.txt', encoding='utf-8') 
fw = codecs.open('outputfile.txt', 'w')
for line in fr:
    line_data=line.split()
for x, e in list(enumerate(line_data)):
    if e in connectives:
        line_data[x]='.' 

代码未完成

我想你只是有一些缩进问题。由于我使用的是python 2.7,所以我还向连接词添加了
u'
,以指定unicode

若要将现有行拆分为两行,可能需要使用
添加回车符

这是一个开始(但不是最终):

生成此输出(额外的空间,因为分割出现在一行的中间)。


这里有一种方法可以做到这一点,一个字一个字地构建字符串,并在适当的地方添加
\n

#!/usr/bin/python
# -*- coding: utf-8 -*-

connectives=set(['കാരണം','അതുകൊണ്ട്‌ ','പക്ഷേ','അതിനാല്‍','എങ്കിലും','എന്നാലും',
                 'എങ്കില്‍','എങ്കില്‍പോലും','എന്നതുകൊണ്ട്‌ ','എന്ന', '.'])

s=""

with open('i.txt') as file:
    for line in file:
        for word in line.split():
            if word in connectives:                
                s += '.\n'
            else:
                s += '{} '.format(word)

print s
请注意,我在
连接词列表的末尾添加了
,并将其设置为一个。集合是一种集合类型,对于快速成员身份测试非常有用,例如连接词中的
if-word:
在代码中。我还决定使用将
单词
放入字符串中。如果愿意,这可以更改为
word+'

输出:

പ്രധാനമന്ത്രി മന്‍മോഹന്‍സിംഗ് നാട്ടില്‍ എത്തി .
അദ്ദേഹം മലയാളി അല്ല .
അദ്ദേഹത്തെ പറ്റി പറയാന്‍ വാക്കുകല്ളില്ല .
与另一个答案不同的是,在第一行之后的每行开头的前导空格没有问题

顺便说一下,如果您对使用感到满意,您可以将代码压缩为:

#!/usr/bin/python
# -*- coding: utf-8 -*-

connectives=set(['കാരണം','അതുകൊണ്ട്‌ ','പക്ഷേ','അതിനാല്‍','എങ്കിലും','എന്നാലും',
                 'എങ്കില്‍','എങ്കില്‍പോലും','എന്നതുകൊണ്ട്‌ ','എന്ന', '.'])

with open('i.txt') as file:
    s = ''.join(['.\n' if word in connectives else '{} '.format(word) 
                 for line in file 
                 for word in line.split()])

print s

你可能应该举一个使用英语字母表的例子。我真的无法理解我不认识的字符是怎么回事。这是我们的本地语言马来语,它都是用unicode字符写的。我很欣赏这一点,但我所说的问题是认知问题,而不是技术问题。但也许有人比我更精通多种语言,在这方面可能会更有能力。它是有效的,但所需的输出中不需要连接词。否则它会工作。@user3251664对不起,我没发现。我自己不是讲马来语的人!这是一个简单的修复,所以我编辑了答案。我还添加了另一个版本,我认为这也是一个更好的版本。
#!/usr/bin/python
# -*- coding: utf-8 -*-

connectives=set(['കാരണം','അതുകൊണ്ട്‌ ','പക്ഷേ','അതിനാല്‍','എങ്കിലും','എന്നാലും',
                 'എങ്കില്‍','എങ്കില്‍പോലും','എന്നതുകൊണ്ട്‌ ','എന്ന', '.'])

s=""

with open('i.txt') as file:
    for line in file:
        for word in line.split():
            if word in connectives:                
                s += '.\n'
            else:
                s += '{} '.format(word)

print s
പ്രധാനമന്ത്രി മന്‍മോഹന്‍സിംഗ് നാട്ടില്‍ എത്തി .
അദ്ദേഹം മലയാളി അല്ല .
അദ്ദേഹത്തെ പറ്റി പറയാന്‍ വാക്കുകല്ളില്ല .
#!/usr/bin/python
# -*- coding: utf-8 -*-

connectives=set(['കാരണം','അതുകൊണ്ട്‌ ','പക്ഷേ','അതിനാല്‍','എങ്കിലും','എന്നാലും',
                 'എങ്കില്‍','എങ്കില്‍പോലും','എന്നതുകൊണ്ട്‌ ','എന്ന', '.'])

with open('i.txt') as file:
    s = ''.join(['.\n' if word in connectives else '{} '.format(word) 
                 for line in file 
                 for word in line.split()])

print s