Проверьте, что ваш .project содержит javanature
следующим образом:
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
Если он отсутствует, добавьте его ...
Очень поздно, но я надеюсь, что кто-то это будет полезно.
Функция print
является виновником - она переводит символы \x00
и \x07
в значения ASCII при выполнении. В частности, это происходит только при передаче строки в функцию print
, а не итерируемый или другой объект (например, ваш tuple
).
Это пример:
>>> s = 'This\x00string\x00is\x00an\x00\x07Example.'
>>> s
'This\x00string\x00is\x00an\x00\x07Example.'
>>> print(s)
This string is an Example.
Если вы добавите строку s
к итерируемому (tuple
, set
или list
), s
не будет быть отформатирован с помощью функции print
:
>>> s_list = [s]
>>> print(s_list) # List
['This\x00string\x00is\x00an\x00\x07Example.']
>>> print(set(s_list)) # Set
{'This\x00string\x00is\x00an\x00\x07Example.'}
>>> print(tuple(s_list)) # Tuple
('This\x00string\x00is\x00an\x00\x07Example.')
Поскольку байты \x00
и \x07
являются управляющими символами ASCII (\x00
- это NUL и \x07
). будучи БЕЛ), вы не можете представлять их по-другому. Таким образом, единственный способ, которым вы можете вырезать эти символы из строки без печати, - это использовать метод .replace()
; но учитывая, что \x00
байты обрабатываются терминалом как пробелы, вы должны использовать s.replace('\x00', ' ')
, чтобы получить тот же вывод, который теперь изменил истинное содержимое строки.
В противном случае при построении строки; Вы могли бы попытаться реализовать некоторую логику для проверки управляющих символов ASCII и либо не добавлять их в tempMess
, ни добавлять другой символ, например пробел или подобный.
ASCII Wiki: https://en.wikipedia.org/wiki/ASCII
Модуль Curses: https: // docs. python.org/3.7/library/curses.ascii.html?highlight=ascii#module-curses.ascii (может быть полезно, если вы хотите реализовать какую-либо логику).