Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 如何在整数打印结束时删除逗号?_Python_Python 3.x - Fatal编程技术网

Python 如何在整数打印结束时删除逗号?

Python 如何在整数打印结束时删除逗号?,python,python-3.x,Python,Python 3.x,我是python新手,尝试使用以太网多项式获取crc32作为hexfile,并将其存储在另一个文件中。我能够以0x99、0x3A、0xC6、0x26、的形式获得输出,该输出将存储在文件.crc中,但在输出的末尾有逗号,我不需要它。将输出添加到文件时,我可以在此处执行哪些操作来删除 文件中的当前输出:0x99、0x3A、0xC6、0x26, 预期输出:0x99、0x3A、0xC6、0x26 输入文件内容如下: :02000004A0104A :20000000D004003910000F8D9FF

我是python新手,尝试使用以太网多项式获取crc32作为hexfile,并将其存储在另一个文件中。我能够以
0x99、0x3A、0xC6、0x26、
的形式获得输出,该输出将存储在
文件.crc
中,但在输出的末尾有逗号,我不需要它。将输出添加到文件时,我可以在此处执行哪些操作来删除

文件中的当前输出:0x99、0x3A、0xC6、0x26,
预期输出:0x99、0x3A、0xC6、0x26
输入文件内容如下:
:02000004A0104A
:20000000D004003910000F8D9FF0E00DC0F910010A07B000004D8B00404040403B0080600B64D0
:1000020000505D002F296D00F1AE1D00FB2B00007C

您最好建立一个字符串列表,并一次完成
join()

def crc32(filename=“input_file.hex”,chunksize=65536): 打开(文件名为“rb”)为f1时: while(chunk:=f1.read(chunksize)): file=open('output_file.crc',“w”) crc=zlib.crc32(块)&0xFFFF\u FFFF out=[] 对于范围(4)中的i: 字节=(crc>>(8*i))&0xFF 追加(f'0x{byte:02X}') outstr=','。联接(out) file.write(outsr) 打印(未打印)
我会尝试将结果添加到字符串或数组中,然后在打印结果之前修剪最后一个字符。大概是这样的:

导入zlib
def crc32(filename=“input.hex”,chunksize=65536):
打开(文件名为“rb”)为f1时:
while(chunk:=f1.read(chunksize)):
file=open('output_file.crc',“w”)
crc=zlib.crc32(块)&0xFFFF\u FFFF
结果=“”
对于范围(4)中的i:
字节=(crc>>(8*i))&0xFF
write(f'0x{byte:02X},')
结果+=f'0x{字节:02X},\n'
打印(结果[:-2])
crc32()
输出

0xE0,
0x24,
0x7A,
0x73
编辑:有关更优雅的解决方案,请参见@quamrana answer。

尝试使用
endswith()
并根据需要将最后一个字符切掉。如果你的情况更复杂,还有其他方法可以解决,但我觉得这很简单,也可以理解

test = 'abcd,'

if test.endswith(','):
  test=test[:-1]

print(test) # 'abcd'
如果希望从迭代的最后一个阶段中删除逗号,则需要使用enumerate。这里概述了这两种情况:


或者这可能比字符串分析更复杂?

在for循环中,对于范围(4)中的i
,您显式地使用一个尾随逗号和空格写入每个十六进制块:
file.write(f'0x{byte:02X}')
。考虑到现有代码,最简单的选择是替换此行:

file.write(f'0x{byte:02X}, ')
为此:

if i < 3:
    file.write(f'0x{byte:02X}, ')
else:
    file.write(f'0x{byte:02X}')
如果i<3:
write(f'0x{byte:02X},')
其他:
file.write(f'0x{byte:02X}')
或者你可以用一行来写:

file.write(f'0x{byte:02X}, ') if i < 3 else file.write(f'0x{byte:02X}')
file.write(f'0x{byte:02X}',如果我<3 else file.write(f'0x{byte:02X}'))

关闭文件之前,只需删除1个字符。。。。或循环到3,并分别处理最后一个。如图所示的代码在写入模式下重复打开同一输出文件,这将有效地擦除在上次迭代
时写入文件的任何内容。此外,为什么不使用
struct
模块来解包
crc
?有很多方法可以从字符串中的已知位置删除已知字符。这些技术在任何关于Python字符串的教程中都有介绍。请重复这些材料,并张贴您的编码尝试。夸姆拉纳:非常感谢,它工作得很好。再次感谢。
file.write(f'0x{byte:02X}, ') if i < 3 else file.write(f'0x{byte:02X}')