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