2015-08-19 96 views
0

所以我有這樣的代碼,這樣我可以由用戶輸入從用戶輸入Unicode字符的文件進行比較,以Unicode字符

print "Enter a nepali string" 
split_string=raw_input().decode(sys.stdin.encoding or locale.getpreferredencoding(True)) 

Unicode字符串,我已經在文件中的一些unicode字符串,如果是Unicode的字符串匹配爲用戶輸入字符串中的子字符串,那麼我必須拆分該字符串。假設我有「सुर」的文件,如果是「सुरक्षा」匹配是通過用戶輸入的話,我只希望「क्षा」輸出

with codecs.open("prefixnepali.txt","rw","utf-8") as prefix: 
    for line in prefix: 
      line=ud.normalize('NFC',line) 
      if line in split_string: 
      prefixy=split_string[len(line):len(split_string)] 
      print prefixy 
      else: 
      print line 

但是當我運行該程序,我得到

दि

सुर

रु

哪些是在文件中的Unicode字符串時,我輸入 「सुरक्षा」 在終端中。 我可以知道這裏有什麼問題嗎?

回答

0

問題可能很簡單:從文件讀取的行在其末尾有換行符。使用splitlines誠如在Reading a file without newlinesGetting rid of \n when using .readlines()

with codecs.open("prefixnepali.txt","rw","utf-8") as prefix: 
    for line in prefix.read().splitlines(): 
      line=ud.normalize('NFC',line) 
      if line in split_string: 
      prefixy=split_string[len(line):len(split_string)] 
      print prefixy 
      else: 
      print line 

而且順便說一句,line in split_string將尋找的line發生內split_string任何地方。如果您要查找完全匹配的前綴,則應使用split_string.find(line) == 0split_string[0:len(line)] == line

相關問題