阅读文本时处理逗号?
Handle Commas While Reading Text?
我的代码试图读取 rootDir
中指定目录中的所有日志文件,并将该日志文件中的某些信息写入 outputFile
我遇到的问题是 searchObj_Archive_date.group()
、fullpath
、zDiscsVar
、zCopiesVar
和 searchObj_Year_3or6.group()
没有被读入我的文件来自日志文件中的某些行。这种情况只发生在总输出文本行的 10% 左右,所以我很困惑为什么它只在某些时候发生,所以我得到的不是 E:\filepath\text.txt | 5/23/2015 12:00 | C:\anotherFilePath\text.txt | 23 | 23 | 5Year
,而是 E:\filepath\text.txt | | | | |
如能深入了解此错误发生的原因,我们将不胜感激。我的代码如下:
经过一些研究,我发现导致我的错误的原因是每当一行中有逗号 ,
时。它停止读取该逗号处的行并跳到下一行,有人知道解决这个问题的方法吗?
给我带来问题的输入文本示例:11/23/2015 12:34:58 Adding file D:\fp\fp1\fp2\text, text, text.txt
通常这些行没有逗号,所以有人知道在阅读文本行时处理逗号的方法吗?
import os
import re
fo = open('outputFile', 'w')
fo.write("Col|Col|Col|Col|Col|Col \n")
# 1.walk around directory and find log file in one of folders
rootDir = "C:\Users\"
for path, dirs, files in os.walk(rootDir, topdown=False):
for filename in files:
fullpath = os.path.join(path, filename)
if (filename=="text.txt"):
# 2.open file. read from file
fi2 = open(fullpath, 'r+')
fi2Content = fi2.read()
zDiscs = re.search(r'(\sNumber of copies: (\d{1,2}))', fi2Content, re.M|re.I)
if zDiscs:
zDiscsVar = str(zDiscs.group(2))
zCopies = re.search(r'(Number of Discs in Set: (\d{1,2}))', fi2Content, re.M|re.I)
if zCopies:
zCopiesVar = str(zCopies.group(2))
fi = open(fullpath, 'r')
# 3.parse text in incoming file and use regex to find PATH
for line in fi:
#4.write path and info to outgoing file
m = re.search(r'(Adding file(.*))',line)
if m:
searchObj_Adding_file = re.search(r'[A-Z]:\.+', line, re.M|re.I)
searchObj_Archive_date = re.search(r'^\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}:\d{2}', line, re.M|re.I)
searchObj_Year_3or6 = re.search(r'\dyear', line, re.M|re.I)
if searchObj_Adding_file:
fo.write(searchObj_Adding_file.group() + "|")
fo.write(searchObj_Archive_date.group() + "|")
fo.write(fullpath + "|")
fo.write(zDiscsVar + "|")
fo.write(zCopiesVar + "|")
fo.write(searchObj_Year_3or6.group() + '\n')
#5. close file
fo.close()
fi.close()
fi2.close()
我在搜索文本行之前删除了逗号。为此,我在 if: m
之后插入了 lineWoCommas = line.replace(',', '')
我的代码试图读取 rootDir
中指定目录中的所有日志文件,并将该日志文件中的某些信息写入 outputFile
我遇到的问题是 searchObj_Archive_date.group()
、fullpath
、zDiscsVar
、zCopiesVar
和 searchObj_Year_3or6.group()
没有被读入我的文件来自日志文件中的某些行。这种情况只发生在总输出文本行的 10% 左右,所以我很困惑为什么它只在某些时候发生,所以我得到的不是 E:\filepath\text.txt | 5/23/2015 12:00 | C:\anotherFilePath\text.txt | 23 | 23 | 5Year
,而是 E:\filepath\text.txt | | | | |
如能深入了解此错误发生的原因,我们将不胜感激。我的代码如下:
经过一些研究,我发现导致我的错误的原因是每当一行中有逗号 ,
时。它停止读取该逗号处的行并跳到下一行,有人知道解决这个问题的方法吗?
给我带来问题的输入文本示例:11/23/2015 12:34:58 Adding file D:\fp\fp1\fp2\text, text, text.txt
通常这些行没有逗号,所以有人知道在阅读文本行时处理逗号的方法吗?
import os
import re
fo = open('outputFile', 'w')
fo.write("Col|Col|Col|Col|Col|Col \n")
# 1.walk around directory and find log file in one of folders
rootDir = "C:\Users\"
for path, dirs, files in os.walk(rootDir, topdown=False):
for filename in files:
fullpath = os.path.join(path, filename)
if (filename=="text.txt"):
# 2.open file. read from file
fi2 = open(fullpath, 'r+')
fi2Content = fi2.read()
zDiscs = re.search(r'(\sNumber of copies: (\d{1,2}))', fi2Content, re.M|re.I)
if zDiscs:
zDiscsVar = str(zDiscs.group(2))
zCopies = re.search(r'(Number of Discs in Set: (\d{1,2}))', fi2Content, re.M|re.I)
if zCopies:
zCopiesVar = str(zCopies.group(2))
fi = open(fullpath, 'r')
# 3.parse text in incoming file and use regex to find PATH
for line in fi:
#4.write path and info to outgoing file
m = re.search(r'(Adding file(.*))',line)
if m:
searchObj_Adding_file = re.search(r'[A-Z]:\.+', line, re.M|re.I)
searchObj_Archive_date = re.search(r'^\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}:\d{2}', line, re.M|re.I)
searchObj_Year_3or6 = re.search(r'\dyear', line, re.M|re.I)
if searchObj_Adding_file:
fo.write(searchObj_Adding_file.group() + "|")
fo.write(searchObj_Archive_date.group() + "|")
fo.write(fullpath + "|")
fo.write(zDiscsVar + "|")
fo.write(zCopiesVar + "|")
fo.write(searchObj_Year_3or6.group() + '\n')
#5. close file
fo.close()
fi.close()
fi2.close()
我在搜索文本行之前删除了逗号。为此,我在 if: m
lineWoCommas = line.replace(',', '')