Попробуйте заменить эту строку:
document.cookie = "c_odi" + "=" + $('#orderdetailid').val() + expires + "; path=/";
с этим:
document.cookie = "c_odi" + "=" + escape($('#orderdetailid').val()) + expires + "; path=/";
При попытке прочитать значение вам придется использовать unescape
, но вы когда придет время:)
Вам понадобится проверка орфографии, если вы хотите, чтобы слова были написаны и проанализированы правильно. Вот проверка орфографии, используемая для импорта пространства имен re, с полной статьей здесь ...
import re
from collections import Counter
def words(text): return re.findall(r'\w+', text.lower())
WORDS = Counter(words(open('big.txt').read()))
def P(word, N=sum(WORDS.values())):
"Probability of `word`."
return WORDS[word] / N
def correction(word):
"Most probable spelling correction for `word`."
return max(candidates(word), key=P)
def candidates(word):
"Generate possible spelling corrections for `word`."
return (known([word]) or known(edits1(word)) or known(edits2(word)) or [word])
def known(words):
"The subset of `words` that appear in the dictionary of WORDS."
return set(w for w in words if w in WORDS)
def edits1(word):
"All edits that are one edit away from `word`."
letters = 'abcdefghijklmnopqrstuvwxyz'
splits = [(word[:i], word[i:]) for i in range(len(word) + 1)]
deletes = [L + R[1:] for L, R in splits if R]
transposes = [L + R[1] + R[0] + R[2:] for L, R in splits if len(R)>1]
replaces = [L + c + R[1:] for L, R in splits if R for c in letters]
inserts = [L + c + R for L, R in splits for c in letters]
return set(deletes + transposes + replaces + inserts)
def edits2(word):
"All edits that are two edits away from `word`."
return (e2 for e1 in edits1(word) for e2 in edits1(e1))`
Он не только исправляет разделенные слова, но также удаляет, транспонирует и вставляет неправильные слова, чтобы «исправить» их. Вы можете заменить файл «big.txt» документом, который вы используете в конструкторе Counter, и, надеюсь, все будет работать оттуда.
Вот простой скрипт, который работает для вашего примера. Очевидно, вы хотели бы больший корпус правильных слов. Кроме того, вы, вероятно, захотите иметь ветку elif
, которая оглянулась бы на предыдущее слово, если присоединение к следующему слову не смогло исправить не-слово.
from string import punctuation
word_list = "big list of words including a programming language is general purpose"
valid_words = set(word_list.split())
bad = "Java is a prog ramming lan guage. C is a gen eral purpose la nguage."
words = bad.split()
out_words = []
i = 0
while i < len(words):
word = words[i]
if word not in valid_words and i+1 < len(words):
next_word = words[i+1]
joined = word + next_word
if joined.strip(punctuation) in valid_words:
word = joined
i += 1
out_words.append(word)
i += 1
good = " ".join(out_words)
print(good)