1

我需要做很多关于powerpoint文件的工作,我使用win32com来处理工作,我是台湾人,我的操作系统是Windows 7-64bit繁体版本,文件名中有一些汉字,但有些字符没有允许作为 Windows 中的文件名。

like '\xe8\xaa\xb2\x0b\xe6\xb0\xb4'

上面的行在 Windows 中包含无效字符,我怎样才能删除无效字符?实际上,\xe8\xaa\xb2\x0b\xe6\xb0\xb4 是一个字符串,如果我打印出来,它会在我的控制台中显示奇怪的符号。但是我不知道哪个字符是奇怪的符号。

非常感谢你!

4

2 回答 2

2

试试这个:

dosnames=['CON', 'PRN', 'AUX', 'NUL', 'COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9', 'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6', 'LPT7', 'LPT8', 'LPT9']
final=''
string='th\xe8is i\xaas \xb2a te><s\x0b\xe6t\xb0.\xb4'
for char in string:
  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('.', '')=='':
  raise SystemError('final string is all periods!')

这将检查 dos 名称和不允许的 ascii 字符。然后,print final给我'this is a test.'

于 2013-04-09T17:13:59.053 回答
1

它失败是因为\x0b字节代表一个垂直选项卡,它不允许成为 Windows 中文件名的一部分。

在 Windows 下,您可以使用任何 unicode 字符作为文件名的一部分,但以下情况除外:

  • < > : " / \ | ? *
  • 整数表示为 0-31(小于 ASCII 空格)的字符
  • 目标文件系统不允许的任何其他字符(例如,尾随句点或空格)
  • 任何 DOS 名称:CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9(并避免 AUX.txt 等)
  • 文件名是所有句点
于 2013-04-09T17:15:07.133 回答