我得到了以下代码来处理中文字符问题,或者 powerpoint 文件中的一些特殊字符,因为我想使用的内容ppt
作为文件名来保存。如果它包含一些特殊字符,它会抛出一些异常,所以我使用下面的代码来处理它。
它在 Python 2.7 下运行良好,但是当我使用 Python 3.0 运行时,它给了我以下错误:
if not (char in '<>:"/\|?*'):
TypeError: 'in <string>' requires string as left operand, not int
我用谷歌搜索了错误消息,但我不明白如何解决它。我知道代码 if not (char in '<>:"/\|?*'):
是将字符转换为ASCII码数字,对吗?
有什么例子可以解决我在 Python 3 中的问题吗?
def rm_invalid_char(self,str):
final=""
dosnames=['CON', 'PRN', 'AUX', 'NUL', 'COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9', 'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6', 'LPT7', 'LPT8', 'LPT9']
for char in str:
if not (char in '<>:"/\|?*'):
if ord(char)>31:
final+=char
if final in dosnames:
#oh dear...
raise SystemError('final string is a DOS name!')
elif final.replace('.', '')=='':
print ('final string is all periods!')
pass
return final