Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何转到下一行而不是打印\n?_Python_Python 3.x - Fatal编程技术网

Python 如何转到下一行而不是打印\n?

Python 如何转到下一行而不是打印\n?,python,python-3.x,Python,Python 3.x,我把十六进制数转换成ASCII码,然后直接在屏幕上打印出来。但我没有转到下一行,而是在输出控制台上得到“\n”。你能查一下我的密码并告诉我为什么我会得到这个吗 十六进制值存储在名为“hexa”的文件中 fin = open('hexa', 'r') hexlist = fin.readline().split(' ') for i in hexlist: print(str(codecs.decode(i, 'hex')).strip("b'"), end='') fin.close(

我把十六进制数转换成ASCII码,然后直接在屏幕上打印出来。但我没有转到下一行,而是在输出控制台上得到“\n”。你能查一下我的密码并告诉我为什么我会得到这个吗

十六进制值存储在名为“hexa”的文件中

fin = open('hexa', 'r') 
hexlist = fin.readline().split(' ')
for i in hexlist:
    print(str(codecs.decode(i, 'hex')).strip("b'"), end='')
fin.close()
这是我得到的输出:

someRandomChanracters_._.\n\nOnly
但我的预期产出是:

someRandomChanracters_._.

Only
提前感谢您的回复

编辑1: 我想我的问题没有说到点子上。当从十六进制转换为ascii时,我遇到了这些

a carriage return (0x0d) or a line feed (0x0a)
打印字符“\n”而不是转到新行。此外,当我遇到单引号(任何特殊字符)时,它们以以下格式打印:

"'"
"["hello"]" instead of [hello]
文本文件的内容如下所示:

D8 FF E0 FF 10 00 46 42 11 21 01 00 48 00 27 6E 2E 5F 2E 5F 6F 73 65
我的目标是将此十六进制文件内容转换为文本格式,而不使用任何额外的引号或字符,如“\n”\t”

我的问题是如何克服这个问题?

试试这个:

with open('hexa', 'r') as f:
    for line in f:
        line = line.split(' ')
        print(str(codecs.decode(line, 'hex')).strip("b'"), end='')
带有关键字的
将自动关闭文件,即使出现问题。

试试这个

with open('file1.txt','r') as f:
    data = f.readlines()
    data_list = [line.replace('\n', '') for line in data]

print(data_list)

输出:

['someRandomChanracters_._.', 'Only']
要以换行方式打印

print(*data_list, sep='\n')
or
# for i in data_list:
#     print(i)
-------------
# Output:
# someRandomChanracters_._.
# Only

当您遇到这种错误时,可以使用字符串“split”函数

string_variable = "someRandomChanracters_._.\n\nOnly"

first_part = string_variable.split("\n\n")[0] #before \n\n
second_part = string_variable.split("\n\n")[1] #after \n\n
要按所需方式打印,请执行以下操作:

print(first_part + "\n" + "\n" + second_part)

让我们来看看您的代码实际上做了什么

你可以把一个大概是两个字符的字符串(比如说
0a
)解码成一个单字节数组。然后,取这个(
str(…)
)的字符串表示形式,在我们的示例中,它将是
b'\n'
。为什么?值为10(0x0a)的单个字节是ASCII中的换行符,因此Python将其显示为
\n
,而
b'
则表示它是一个字节数组。然后去掉
b
:s,然后打印剩下的内容-反斜杠和字母
n

与其采用字节数组的字符串表示形式(除了调试之外,这对任何事情都毫无用处),不如将其解码为字符串。像这样(未经测试)的东西可能会起作用

for i in hexlist:
    print(codecs.decode(i, 'hex').decode('ascii'), end = '')
然而,一次只能解码一个字节,这意味着任何多字节编码(如UTF-8)都无法工作。更好的方法是一次解码整个字符串(假设字符串不会非常长):


(请注意,
for
循环已通过列表理解在
打印
调用中移动)。

感谢您的回复@Evan,但我收到您代码的TypeError。
编解码器.decode
不允许在中给出列表。我尝试了不同的for循环,一个用于拆分,另一个用于打印,但我得到了相同的
'\n'
问题。你能发布文件的外观吗?我发布了@EvanNo@shaik moeed,替换了'\n',我们将其从输出中完全删除,但这不是我的目标。我想转到新行,而不是打印“\n”。@RishiNjr您可以使用
for loop
中的
print
以新行打印。这就是你的期望吗?抱歉@Shaik我的模糊问题我编辑得更具体抱歉@eggrobot我的模糊问题我编辑得更具体抱歉@sp1rs我的模糊问题我编辑得更具体你能解释什么
D8 FF E0 FF 10 00 46 42 11 21 01 00 48 00 27 6E 2E 5F 2E 5F 5F 6F 73吗65
会是一个字符串吗?这只是大量十六进制的一部分。有些表示动作,因此它们没有ascii对应项
前四对表示这一点(Øÿÿ)
。下一对没有ascii表示。这个
someRandomChanracters.\n\n仅仅是十六进制数转换后文本的一部分。对于无效的代码序列,您希望如何处理?
for i in hexlist:
    print(codecs.decode(i, 'hex').decode('ascii'), end = '')
print(bytes([int(x, 16) for x in hexlist]).decode('utf-8'))