Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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中将文件写入csv时,列表索引超出范围_Python_Regex_Python 2.7_Csv - Fatal编程技术网

在python中将文件写入csv时,列表索引超出范围

在python中将文件写入csv时,列表索引超出范围,python,regex,python-2.7,csv,Python,Regex,Python 2.7,Csv,我正在将文件写入csv,但它显示列表索引超出范围。这是我的密码。我有一个包含85个文件的目录 import os import os.path import csv import re import calendar path = 'C:\\Users\\akhilpriyatam.k\\Desktop\\xls' text_files = [os.path.splitext(f)[0] for f in os.listdir(path)] for v in text_files: os

我正在将文件写入csv,但它显示列表索引超出范围。这是我的密码。我有一个包含85个文件的目录

import os
import os.path
import csv
import re
import calendar
path = 'C:\\Users\\akhilpriyatam.k\\Desktop\\xls'
text_files = [os.path.splitext(f)[0] for f in os.listdir(path)]
for v in text_files:
    os.chdir('C:\\Users\\akhilpriyatam.k\\Desktop\\xls')
with open('file1.csv', 'wb') as csvfile:
    thedatawriter = csv.writer(csvfile,delimiter=',')
    for v in text_files:
        months = list(calendar.month_name[1:])
        regex = re.compile('|'.join(months))
        iter = re.finditer(regex, v)
        if iter:
            idx = [i for i in iter][0].start()
            filename, timestamp = v[:idx],v[idx:-4]
            print filename, timestamp
            thedatawriter.writerow([filename,timestamp])
这里是错误

IndexError                                    Traceback (most recent call last)
<ipython-input-145-0b1c3f1407ed> in <module>()
     15         iter = re.finditer(regex, v)
     16         if iter:
---> 17             idx = [i for i in iter][0].start()
     18             filename, timestamp = v[:idx],v[idx:-4]
     19             print filename, timestamp

IndexError: list index out of range

索引器错误回溯(最近一次调用)
在()
15 iter=re.FindItemer(正则表达式,v)
16如果国际热核实验堆:
--->17 idx=[i代表iter中的i][0].start()
18文件名,时间戳=v[:idx],v[idx:-4]
19打印文件名、时间戳
索引器:列表索引超出范围
返回一个迭代器,它总是真实的:

换句话说,即使没有匹配项,
if iter:
检查也将始终通过。并且,当没有匹配项时,在访问此处空列表的第一个元素时,您将得到一个
索引器:
[i for i in iter][0]
返回一个迭代器,它总是真实的:

iter = re.finditer(regex, v)
        if iter:
换句话说,即使没有匹配项,
if iter:
检查也将始终通过。并且,当没有匹配项时,在访问此处空列表的第一个元素时,您将获得一个
索引器:
[i for i in iter][0]

iter = re.finditer(regex, v)
        if iter:
迭代器不应用作测试条件,它将始终返回True

您应该将代码更改为:

iter = re.findall(regex, v)
            if iter:
findall
将返回可用作测试条件的列表

迭代器不应用作测试条件,它将始终返回True

您应该将代码更改为:

iter = re.findall(regex, v)
            if iter:

findall
将返回一个可用作测试条件的列表。

始终添加有问题的完整错误消息(回溯)-有许多有用的信息-例如,哪一行出现问题,等等。索引器回溯(最后一次调用)在()15 iter=re.finditer(regex,v)16如果iter:-->17 idx=[i代表iter中的i][0].start()18文件名,timestamp=v[:idx],v[idx:-4]19打印文件名,时间戳索引器:列表索引超出范围添加
Traceback
有问题-它将更具可读性,每个人都会阅读它。始终添加有问题的完整错误消息(Traceback)-有许多有用的信息-例如,哪一行出现问题,等等。索引器在()15 iter=re.finditer(regex,v)16如果iter:-->17 idx=[i代表iter中的i][0]。start()18文件名,timestamp=v[:idx],v[idx:-4]19打印文件名,时间戳索引器:列表索引超出范围添加
回溯
有问题-它将更具可读性,每个人都会阅读它。很抱歉,我还不太了解如何在我的代码中使用finditer()。@Akhil Kodicherla迭代器不应用作测试条件,它将始终返回True。很抱歉,我还不太了解如何在代码中使用finditer()。@Akhil Kodicherla迭代器不应用作测试条件,它将始终返回True。