用python解析csv中的行

2024-06-01 01:09:07 发布

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

我正在尝试用python解析csv文件。当我尝试在每行读取字符串中的每个字符时,它只计算并打印出结束字符的结果。我不知道发生了什么事。下面是代码。谢谢。你知道吗

def assignment(s):
    switcher = {
        "N": "N",
        "N": "Q",
        "I" : "S", 
        "I" : "T",
        "I" : "K",
        "I" : "R", 
        "I" : "H",
        "I" : "D",
        "I" : "E"      
    }
    return switcher.get(s, "H")

with open('sentence.csv', 'r') as csv_file:
    csv_read = csv.reader(csv_file)
    for line in csv_read:
        i = 0
        index = 0
        aa = ""
        a = ""
        for index in range (len(line)):
            a=assignment(line[index])
            aa = aa + a
            print(aa)
            index +=1
            print(index)
        h = aa.count("H");
        i = aa.count("I");
        n = aa.count("N");

        print(aa + " has" + "H= " + str(h) + "I=" + str(i) + "N=" + str(n))
        ++i

Tags: 文件csvinforreadindexcountline
1条回答
网友
1楼 · 发布于 2024-06-01 01:09:07

你把翻译表倒过来了。您正在尝试将输入字符分类为类型NIH。你知道吗

我已经颠倒了dict顺序,这样您就可以正确地查找内容,不过如果您搜索Python翻译表,您可以做得更好。我还简化了您的代码,使之足以硬编码一个测试用例:

def assignment(s):
    switcher = {
        "N": "N",
        "Q": "N",
        "S": "I",  
        "T": "I",
        "K": "I",
        "R": "I",  
        "H": "I",
        "D": "I",
        "E": "I"       
    }
    return switcher.get(s, "H")

csv_read = ["QWERTASDFGZXCVBYUIOPHJKLNM"]
for line in csv_read:
    i = 0 
    index = 0 
    aa = ""
    a = ""
    for index in range (len(line)):
        a=assignment(line[index])
        aa = aa + a 
        print(aa)
        index +=1 
        print(index)
    h = aa.count("H");
    i = aa.count("I");
    n = aa.count("N");

    print(aa + " has" + "H= " + str(h) + "I=" + str(i) + "N=" + str(n))

输出(仅最后一行):

25
NHIIIHIIHHHHHHHHHHHHIHIHNH
26
NHIIIHIIHHHHHHHHHHHHIHIHNH hasH= 17I=7N=2

我会让你从这里清理跟踪和格式。你知道吗

相关问题 更多 >