如何在python中检查和编辑每一行?

时间:2015-08-18 15:30:36

标签: python csv split line edit

我只有一周的python经验,所以请原谅我的无知。

我在CSV文件中有一个名为“a”的特定列。通过打印a,Python打印出新行中列的所有行,这是我想要的格式。如何识别每行的第3个最后一个字符,并在python中执行if函数。

if line[-3] == list(string.ascii_letters):
      Add "registry"

# To focus on third last character and determine if it is an alphabet
# Could you please explain how to add a string to the end of the line, 
# and remove a certain number of characters

elif line[-3] == ":":
      Remove the last 5 characters and Add "rex"
elif line[-3] == "0"
      Remove the last 3 characters and Add "tx"

a.readlines()会为此目的而工作吗?

我也尝试过很少成功地实现rstrip:

for line in a:
    line = line.rstrip()
    process(line)

我应该在这里使用a = a.replace("str1", "str2")吗?

示例 我无法发布任何图片。但是有以下格式的表格:

Mat    Debt   Severe    Weather    Dot
sdfs    sdfg    ghgd    sadg:jj  sjdkfsadf
fsdafs  dfg    fgdsf    tdkkkk   sdfsdaf
sadf    hgdf    adfsg   dfgjjj0as   dfbs

a使用'rows = csv.reader(f)'定义为行[n] 如果n为3,则输出如下:

sadg:jj
tdkkkk
dfgjjj0as

我希望输出为:

sarex
tdkkkregistry
dfgjjjtx

3 个答案:

答案 0 :(得分:1)

    with open('csvfile','r') as a,open('csvout','w') as out_csv:
        for line in a.readlines():
            if line[-3].isalpha():
                  line += 'registry'
            elif line[-3] == ":":
                  line = line[:-3] + 'rex'
            elif line[-3] == "0"
                  line = line[:-3] + 'tx'
            out_csv.write(line + '\n')

答案 1 :(得分:0)

当检查字符串是否为ascii字符时,您正在检查它是否是包含所有ascii字符的列表。您可以通过使用'在'中查看它是否在列表中而不是' =='

res_partner

现在通过每一行循环,有很多方法可以做到这一点。这有两种方法。

首先使用splitlines()方法。这将创建一个包含每行的字符串的列表。然后循环它。

if line[-3] in string.ascii_letters:
      line += "registry"
elif line[-3] == ":":
      line = line[:-5]
      line += "rex"
elif line[-3] == "0"
      line = line[:-3]
      line += "tx"

第二种方法是使用拆分和分割\ n字符。

for line in a.splitlines():
          ...

答案 2 :(得分:0)

我不确定您是要创建更新的CSV文件,还是只需要显示更新的值?

以下脚本同时执行:

import csv, re

with open("input.csv", "r") as f_input, open("output.csv", "wb") as f_output:
    csv_input = csv.reader(f_input)
    csv_output = csv.writer(f_output)
    csv_output.writerow(next(csv_input))

    for cols in csv_input:
        if cols[3][-3].isalpha():
            cols[3] += 'registry'
        elif cols[3][-3] == ":":
            cols[3] = cols[3][:-5] + 'rex'
        elif cols[3][-3] == "0":
            cols[3] = cols[3][:-3] + 'tx'

        csv_output.writerow(cols)
        print cols[3]

这将打印以下输出:

sarex
tdkkkkregistry
dfgjjjtx

并将按如下方式创建输出CSV文件:

Mat,Debt,Severe,Weather,Dot
sdfs,sdfg,ghgd,sarex,sjdkfsadf
fsdafs,dfg,fgdsf,tdkkkkregistry,sdfsdaf
sadf,hgdf,adfsg,dfgjjjtx,dfbs

使用Python 2.7进行测试