我在python代码中不断收到“无效的\ x转义”错误。我在做什么错了?

时间:2018-11-29 02:56:36

标签: python

我一直在尝试获取这段python代码,以在计算机上打开目录并读取其内容,因此我可以为分配生成输出,但是我一直在获取“无效的\ x转义”。我的语法有误,或者我的正斜杠和反斜杠混在一起了。

import sys,os,re
import time

定义用作计数器的全局变量

tokens = 0
documents = 0
terms = 0
termindex = 0
docindex = 0 

初始化列表变量

alltokens = []
alldocs = []

捕获例程的开始时间,以便我们确定总运行时间

处理主体所需的时间

t2 = time.localtime() 

设置语料库的目录名称

dirname = "C:\Users\xhenr\Documents\cs3308\cacm"

对于目录中的每个文档,请将其读入字符串

all = [f for f in os.listdir(dirname)]
for f in all:
    documents+=1
    with open('C:\Users\xhenr\Documents\cs3308\cacm/f', 'r') as myfile:
        alldocs.append(f)
        data=myfile.read().replace('\n', '')  
        for token in data.split():
            alltokens.append(token)
        tokens+=1

打开以为文档字典写入文件

documentfile = open('C:/Users/xhenr/Documents/cs3308/cacm/documents.dat', 'w')
alldocs.sort()
for f in alldocs:
  docindex += 1
  documentfile.write(f+','+str(docindex)+os.linesep)
documentfile.close()

对列表中的令牌进行排序

alltokens.sort()

定义唯一术语列表

g=[]

确定语料库中的唯一术语

for i in alltokens:    
    if i not in g:
       g.append(i)
       terms+=1

terms = len(g

输出到磁盘文件的索引。作为此过程的一部分,我们为每个唯一术语分配一个“索引”号。

indexfile = open('C:/Users/xhenr/Documents/cs3308/cacm/index.dat', 'w')
for i in g:
  termindex += 1
  indexfile.write(i+','+str(termindex)+os.linesep)
indexfile.close()

在语料上打印指标

print 'Processing Start Time: %.2d:%.2d' % (t2.tm_hour, t2.tm_min)
print "Documents %i" % documents
print "Tokens %i" % tokens
print "Terms %i" % terms

t2 = time.localtime()   
print 'Processing End Time: %.2d:%.2d' % (t2.tm_hour, t2.tm_min)

1 个答案:

答案 0 :(得分:0)

这里:

dirname = "C:\Users\xhenr\Documents\cs3308\cacm"

Python实际上将反斜杠解释为尝试转义以下字符,而实际上它是系统路径。您可以通过转义反斜杠来解决此问题,但是有一种更简单的方法:

dirname = r"C:\Users\xhenr\Documents\cs3308\cacm"

通过在前面放置r,您可以告诉Python将字符串按原样处理,而没有任何转义字符。 (r代表raw。)这也意味着您也必须更改此行:

with open('C:\Users\xhenr\Documents\cs3308\cacm/f', 'r') as myfile:

更改为:

with open(r'C:\Users\xhenr\Documents\cs3308\cacm\f', 'r') as myfile:

(还改变了前后斜杠用法的不一致。