Тема: Противнющий NEL, (U+0085)
Як видалити в Python NEXT LINE, воно ж, NEL, воно ж U+0085, воно ж <85> ?
Пробував
.replace("\r\n", " ")
.replace("\r", " ")
.replace("\R", " ")
.replace("\u0085", " ")
.replace("\u0085u", " ")
Нічого не допомагає.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Python → Противнющий NEL, (U+0085)
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Як видалити в Python NEXT LINE, воно ж, NEL, воно ж U+0085, воно ж <85> ?
Пробував
.replace("\r\n", " ")
.replace("\r", " ")
.replace("\R", " ")
.replace("\u0085", " ")
.replace("\u0085u", " ")
Нічого не допомагає.
s = ' '.join(s.splitlines())
>>> 'ghdfhfd\u0085bcfhfh\u0085\u0085'.replace("\u0085", " ")
'ghdfhfd bcfhfh '
Ніби працює. Що я роблю нетак? Python 3.3
Хоча, якщо у Вас Python 2.*, проблема може бути в тому, що рядкові літерали по дефолту представляють байтові рядки, а не юнікодні. Очевидно, тоді треба попередньо декодувати прочитаний рядок байтів, а заміну робити так:
.replace(u"\u0085", " ")
s = ' '.join(s.splitlines())
роблю
pr=str(A[j][i])
pr=pr.join(pr.splitlines())
Все залишається на місці, не видаляється.
Хоча, якщо у Вас Python 2.*, проблема може бути в тому, що рядкові літерали по дефолту представляють байтові рядки, а не юнікодні. Очевидно, тоді треба попередньо декодувати прочитаний рядок байтів, а заміну робити так:
.replace(u"\u0085", " ")
В мене 2.7 Python
все в utf-8:
sys.setdefaultencoding('[b]utf-8[/b]')
db=MySQLdb.connect(host="хххх", user="хххх", passwd="хххх", db="хххх", charset='[b]utf8[/b]')
db.set_character_set('[b]utf8[/b]')
Як ще декодувати?
Хоча, якщо у Вас Python 2.*, проблема може бути в тому, що рядкові літерали по дефолту представляють байтові рядки, а не юнікодні. Очевидно, тоді треба попередньо декодувати прочитаний рядок байтів, а заміну робити так:
.replace(u"\u0085", " ")
О, те що треба! Пішло
В пітоні є два типи рядків: байтові й юнікодні.
Рядки байтів можуть містити текст у різних кодуваннях, у т.ч., utf-8. Рядки юнікодних символів зберігають розкодовану послідовність символів у вигляді їхніх юнікодних кодів. Якщо система чи база даних використовує utf-8, це не означає, що рядок, повернутий функцією, буде юнікодним.
Спробуйте визначити тип даних рядка, який треба обробити:
print type(рядок)
Якщо результат цього буде <type 'str'> — це рядок байтів, якщо ж <type 'unicode'> — це юнікодний рядок*.
З юнікодним рядком декодування робити непотрібно — просто робите заміну, як у прикладі вище.
Якщо ж це рядок байтів, треба зробити .decode(), якщо це utf-8, чи decode('кодування'), і вже в ньому робити заміну.
*) Це стосується Python 2.*. У Python 3.* юнікодній рядок — <class 'str'>, байтовий рядок — <class 'bytes'>.
В пітоні є два типи рядків: байтові й юнікодні.
Рядки байтів можуть містити текст у різних кодуваннях, у т.ч., utf-8. Рядки юнікодних символів зберігають розкодовану послідовність символів у вигляді їхніх юнікодних кодів. Якщо система чи база даних використовує utf-8, це не означає, що рядок, повернутий функцією, буде юнікодним.Спробуйте визначити тип даних рядка, який треба обробити:
print type(рядок)
Якщо результат цього буде <type 'str'> — це рядок байтів, якщо ж <type 'unicode'> — це юнікодний рядок*.
З юнікодним рядком декодування робити непотрібно — просто робите заміну, як у прикладі вище.
Якщо ж це рядок байтів, треба зробити .decode(), якщо це utf-8, чи decode('кодування'), і вже в ньому робити заміну.*) Це стосується Python 2.*. У Python 3.* юнікодній рядок — <class 'str'>, байтовий рядок — <class 'bytes'>.
<type 'unicode'>
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися