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

2024-09-28 22:25:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我的输入文件(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]='.' 

代码未完成。你知道吗


Tags: 文件代码intxt列表fordata地址
2条回答

有一种方法可以做到这一点,逐字构建一个字符串,并在适当的地方添加.\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

注意,我将'.'添加到了connectives列表的末尾,并将其变成了^{}。集合是一种集合类型,对于快速成员身份测试非常有用,例如代码中的if word in connectives:。我还决定使用^{}word放入字符串中。如果愿意,这可以更改为word + ' '。你知道吗

输出:

പ്രധാനമന്ത്രി മന്‍മോഹന്‍സിംഗ് നാട്ടില്‍ എത്തി .
അദ്ദേഹം മലയാളി അല്ല .
അദ്ദേഹത്തെ പറ്റി പറയാന്‍ വാക്കുകല്ളില്ല .

与另一个答案不同的是,在第一行之后的每行开始处的前导空格没有问题。你知道吗

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

#!/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

我想你只是有一些缩进问题。我还向连接词添加了u'',以指定unicode,因为我使用的是python2.7。你知道吗

如果要将现有行拆分为两行,可能需要添加带有.的回车符。。。你知道吗

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

import codecs

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

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]='.\n'

    print " ".join(line_data).lstrip()

生成此输出(额外的空间,因为拆分位于行的中间)。你知道吗

പ്രധാനമന്ത്രി മന്‍മോഹന്‍സിംഗ് നാട്ടില്‍ എത്തി .
അദ്ദേഹം മലയാളി അല്ല .
 അദ്ദേഹത്തെ പറ്റി പറയാന്‍ വാക്കുകല്ളില്ല .

相关问题 更多 >