删除它们之间有空格的Unicode值

时间:2014-02-07 11:55:21

标签: python python-2.7 unicode python-unicode

我有一个包含逐行排列的Unicode字符串的文件。

ജുഗുപ്‌സയോ നീരസമോ പരിഹാസമോ ദ്യോതിപ്പിക്കുന്ന മുഖഭാവം
വളവ്‌
വക്രത
തിരിവ്‌
കോട്ടം
നന്നേ ചെറുപ്രായത്തില്‍ അസാമന്യ ജീവിത വിജയം നേടുന്നയാള്‍
ഇന്റര്‍നെറ്റിലെ പ്രധാനപ്പെട്ട സേവനം
സ്‌ക്രീനില്‍ കാണുന്ന അതേ രൂപത്തിലും ഭാവത്തിലും പ്രിന്ററില്‍ നിന്ന്‌ ലഭിക്കുന്ന കോപ്പി
തെറ്റ്‌ എന്നു കാണിക്കുന്ന അടയാളം
യുണിക്‌സിനെ ആധാരമാക്കിയുള്ള പ്രവര്‍ത്തന കേന്ദ്രങ്ങളില്‍ ഉപയോഗപ്പെടുത്തുന്ന ഒരു നെറ്റവര്‍ക്ക്‌ വിന്‍ഡോ സ്ഥാപന അന്തരീക്ഷം
പ്രിന്ററിലൂടെ കടലാസ്‌ നീങ്ങിപ്പോകുന്ന ദിശക്ക്‌ ലംബമായുള്ള ദിശ
കമ്പ്യൂട്ടറിലെ ഒരു ഡിസ്‌കിലുള്ള വിവരങ്ങള്‍ മറ്റൊരു ഡിസ്‌കിലേക്ക്‌ കോപ്പിചെയ്‌തു വെക്കാന്‍ ഡോസ്‌ എന്ന ഓപ്പറേറ്റിംഗ്‌ സിസ്റ്റത്തിലുള്ള സംവിധാനം
ക്രിസ്‌തുമസ്‌
പ്രായപൂര്‍ത്തിയായവര്‍ക്കുള്ള ചലച്ചിത്രം
ചില പ്രത്യേക കിരണങ്ങളുടെ സഹായത്താല്‍ എടുക്കുന്ന ചിത്രങ്ങള്‍
എക്‌സറേ
അദൃശ്യാലക്തിക കിരണം
മരണം വരെയും സൗന്ദര്യം ഒരേപോലെ നിലനിര്‍ത്താന്‍ കഴിഞ്ഞവര്‍
കലഹപ്രിയ
ശണ്‌ഠക്കാരി

如何从文件中删除句子?

我需要

  ക്രിസ്‌തുമസ്‌
 കലഹപ്രിയ
    ശണ്‌ഠക്കാരി
വളവ്‌
    വക്രത
    തിരിവ്‌
    കോട്ടം

并删除所有这样的句子

പ്രിന്ററിലൂടെ കടലാസ്‌ നീങ്ങിപ്പോകുന്ന ദിശക്ക്‌ ലംബമായുള്ള ദിശ
    കമ്പ്യൂട്ടറിലെ ഒരു ഡിസ്‌കിലുള്ള വിവരങ്ങള്‍ മറ്റൊരു ഡിസ്‌കിലേക്ക്‌ കോപ്പിചെയ്‌തു വെക്കാന്‍ ഡോസ്‌ എന്ന ഓപ്പറേറ്റിംഗ്‌ സിസ്റ്റത്തിലുള്ള സംവിധാനം

它们用空格分隔。

我正在使用python 2.7

m = open('olam-enml.txt','w')

UTF8

当我尝试这段代码时

string = "നന്നേ ചെറുപ്രായത്തില്‍ അസാമന്യ ജീവിത വിജയം നേടുന്നയാള്‍"

if u' ' not in string .strip():
    print string

我收到了这个错误

Traceback (most recent call last):
  File "/home/akallararajappan/Music/Mycodeexp/d.py", line 3, in <module>
    if u' ' not in string .strip():
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)

1 个答案:

答案 0 :(得分:1)

你可以从行的开头和结尾去掉空格,如果字符串中还有空格你有一个句子:

if u' ' not in line.strip():
    # line is a *not* a sentence

使用io.open()打开您的文件;只写出不是句子的行,你可以使用一个简单的生成器表达式:

import io

with io.open('olam-enml.txt', 'r', encoding='utf8') as infh:
    with io.open('olam-enml-words.txt', 'w', encoding='utf8') as outfh:
        outfh.writelines(line for line in infh if u' ' not in line.strip())