函数内字符串和整数名称的串联(python3)

时间:2018-11-07 22:23:21

标签: python python-3.x function concatenation

这是我在此论坛上发布的第一篇文章。

我早些时候声明了这些字符串,整数和文件名...

linefeed='\n'

consonantFileHeader='Consonants found in the infile:'
vowelFileHeader='Vowels found in the infile:'

qConsonant=0
qVowel=0
ConsonantFile=open(path/tothe/file/chapters/Consonants.txt,'w+')
VowelFile=open(path/tothe/file/chapters/Vowels.txt,'w+')

程序会一一读取Unicode字形,并为每个字形分配一个“类型”。

if glyph='A': 
   type='VOWEL'
elif glyph='B':
   type='CONSONANT'
    ... etc...

此后,我们要添加每个“类型”的运行计数并将记录写入文件,以显示每个“类型”的所有出现情况。这是常规代码,我们不想弄乱main函数,因此我们调用另一个函数来完成它。...

if  type == 'CONSONANT':
    tabulateCONSONANT(glyph)
elif type == 'VOWEL':
    tabulateVOWEL(glyph)

此时,两个不同的types-两个不同的功能。他们在这里...

## ------------------------------------------------------------
def tabulateCONSONANT(glyph):
    qConsonant=qConsonant+1   # bump up a counter
    if  qConsonant = 1        # on 1 write header to output
        ConsonantFile.write(consonantFileHeader)  
    ConsonantFile.write(glyph+linefeed) # write data after    
    return ;
## ------------------------------------------------------------
def tabulateVOWEL(glyph):
    qVowel=qVowel+1  # bump up counter
   if  qVowel = 1
        VowelFile.write(vowelFileHeader) # on 1, write header 
    VowelFile.write(glyph+linefeed)      # write data after
    return ;

很好,但我觉得这确实多余。即使只有值的实际名称发生变化,我也必须为每种类型调用不同的函数!

有什么办法可以编写一个函数,使我们可以将实际的项目名称连接起来,以进行如下操作……?

if  type == 'CONSONANT':
    tabulateANYTHING(glyph,'Consonant')
elif type == 'VOWEL': 
    tabulateANYTHING(glyph,'Vowel')

## ------------------------------------------------------------
def tabulateANYTHING(glyph,TYPE):
# concatenate 'q'with 'TYPE' to reference 'qVowel'
    qTYPE=qTYPE+1  
    if  qTYPE = 1
# concatenate 'TYPE' with part of the filename > 'VowelFile'
    TYPEFile.write(TYPEFileHeader)  
    TYPEFile.write(glyph+linefeed)  # again,concatenation...
    return ;

如果您不知道我要在这里做什么,请告诉我,我会尽力让它更清楚...

1 个答案:

答案 0 :(得分:0)

创建一个dictcollections.Counter,然后在tabulateANYTHING内递增具有与TYPE匹配的键的值

例如,如果您的字典名为quantitiesquantities[TYPE]+=1

对于文件,创建一个dict个文件,并写入具有与TYPE匹配的密钥的文件。 文件头也一样。