<p>你离工作代码只有一步之遥。你所要做的就是首先<code>replace</code>在<code>csvfile</code>中的<code>"</code>,然后你当前的方法就可以正常工作了。你知道吗</p>
<p>编辑:但是,如果您对合并在CSV文件中读取后分开的日期字符串感兴趣,那么您最好选择正则表达式匹配。我在原始答案中加入了一些代码。我已经从<a href="https://stackoverflow.com/a/10309472/5209610">this older answer</a>复制了大部分正则表达式代码(带有编辑)。你知道吗</p>
<pre><code>import re
import csv
with open(file, 'rU') as csvfile:
data = csvfile.read(2024)
# Remove the pesky double-quotes
no_quotes_data = data.replace('"', '')
dialect = csv.Sniffer().sniff(no_quotes_data);
csv_data = csv.reader(no_quotes_data.splitlines(), dialect)
pattern = r'(?i)(%s) +(%s)'
thirties = pattern % (
"Sep|Apr|Jun|Nov",
r'[1-9]|[12]\d|30')
thirtyones = pattern % (
"Jan|Mar|May|Jul|Aug|Oct|Dec",
r'[1-9]|[12]\d|3[01]')
feb = r'(Feb) +(?:%s)' % (
r'(?:([1-9]|1\d|2[0-9]))') # 1-29 any year (including potential leap years)
result = '|'.join('(?:%s)' % x for x in (thirties, thirtyones, feb))
r = re.compile(result)
for ind, phrase in enumerate(csv_data):
if r.match(phrase):
# If you've found a date string, a year string will follow
new_data[ind] = ", ".join(csv_data[ind:ind+2])
del csv_data[ind+1]
for line in csv_data: print line
</code></pre>