csv文件循环结果

2024-09-29 23:29:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图提取城市的csv文件`关于芬德尔(),但当我尝试这样做并将结果写入另一个csv文件时,它会反复循环多次!你知道吗

import io
import csv
import re

lines=0
outfile1 =codecs.open('/mesh/وسطى.csv','w','utf_8')
outfile6 =codecs.open('/mesh/أخرى.csv','w','utf_8')

with io.open('/mishal.csv','r',encoding="utf-8",newline='') as f:
    reader = csv.reader(f)
    for row in f :
        for rows in row:
            lines += 1

            #الوسطى
            m = re.findall('\u0634\u0642\u0631\u0627\u0621',row)
            if m:
                outfile1.write(row)
            else:
                outfile6.write(row)

print("saved In to mishal !")
f.close()

我希望re.finall()城市不要循环,只对每个匹配执行一次,而不是在有匹配的情况下多次丢失。你知道吗

以下是显示过度循环的输出截图:

screenshot of script's output


Tags: 文件csvioimportreopenutfreader
1条回答
网友
1楼 · 发布于 2024-09-29 23:29:55

csv读取器为文件的每一行返回一个列表-您的外循环在每一行上迭代,而您的内循环在每一行上迭代。不清楚你想要什么。但是您的条件写入发生在每一行的每一项上。如果您的目的是检查行中是否有匹配项而不是行中的项

for row in f :
    match = False
    for item in row:
        lines += 1    #??
        #الوسطى   
        match = re.search('\u0634\u0642\u0631\u0627\u0621',item)
    if match:
        outfile1.write(row)
    else:
        outfile6.write(row)

您可以在不使用csv读取器的情况下对文件中的行进行迭代来完成相同的任务

with io.open('/mishal.csv','r',encoding="utf-8",newline='') as f:
    for line in f:
        #الوسطى
        if re.search('\u0634\u0642\u0631\u0627\u0621',line):
            outfile1.write(line)
        else:
            outfile6.write(line)

相关问题 更多 >

    热门问题