我有这段Python代码:
# Subroutine to calculate VAT
def VAT(Total):
return Total * 0.05
# Main program
Total = 100.12
ValueAddedTax = VAT(Total)
ToPay = Total + ValueAddedTax
print("Total £{:.2f} VAT £{:.2f} To pay £{:.2f}".format(Total, ValueAddedTax, ToPay))
运行时,我得到:
def VAT(Total):
^
SyntaxError: invalid character in identifier
原因是代码中包含U+200B ZERO WIDTH SPACE(UTF-8编码:E2 80 8B),如hexdump -C
的输出所示:
00000000 23 20 53 75 62 72 6f 75 74 69 6e 65 20 74 6f 20 |# 子程序用于计算增值税...| 00000010 63 61 6c 63 75 6c 61 74 65 20 56 41 54 e2 80 8b |计算增值税的函数:def VAT(Total):| 00000020 0a 64 65 66 20 56 41 54 28 54 6f 74 61 6c 29 3a |.返回 Total * 0.05 ....| 00000030 e2 80 8b 0a 20 20 20 20 72 65 74 75 72 6e 20 54 |.... return Total * 0.05 | 00000040 6f 74 61 6c 20 2a 20 30 2e 30 35 20 e2 80 8b 0a |....| 00000050 0a 23 20 4d 61 69 6e 20 70 72 6f 67 72 61 6d e2 |.# 主程序。| 00000060 80 8b 0a 54 6f 74 61 6c 20 3d 20 31 30 30 2e 31 |...Total = 100.1| 00000070 32 e2 80 8b 0a 56 61 6c 75 65 41 64 64 65 64 54 |2....ValueAddedTax = VAT(Total).| 00000080 80 8b 0a 54 6f 50 61 79 20 3d 20 54 6f 74 61 6c |...ToPay = Total + ValueAddedTax| 000000a0 20 2b 20 56 61 6c 75 65 41 64 64 65 64 54 61 78 |.| 000000b0 e2 80 8b 0a 70 72 69 6e 74 28 22 总计:{:.2f} 增值税:{:.2f} 应付:{:.2f}".format(T| |otal, ValueAddedTax, ToPay))| 000000c0 6f 74 61 6c 2c 20 56 61 6c 75 65 41 64 64 65 64 | | 000000d0 54 61 78 2c 20 54 6f 50 61 79 29 29 0a |)).| 0000010d我想知道如何去除所有的零宽空格。
:s
命令。 - user202729