Python字母数字

时间:2017-06-06 15:52:52

标签: python for-loop text alphanumeric

问题:

我必须浏览具有字符串行的文本文件,并确定每行是否为字母数字。如果该行是字母数字打印,例如“5345m345ö34l是字母数字”

文本文件示例:

5345m345ö34l 

no2no123non4 

%#""SGMSGSER 

我的代码如下:

file = open('file.txt','r')
data = file.readlines()

for i in data:
    i.strip()
    if (i.isalnum()):
        print (i, 'is alphanumeric')
    else:
        print (i, 'not alphanumeric')
    file.close()

我们可以看到第一行和第二行是字母数字,但程序不起作用?

2 个答案:

答案 0 :(得分:0)

试一下,看看这是否正常 -

file = open('file.txt','r')
data = file.readlines()

for i in data:
    stripped_line = i.strip()
    if (stripped_line.isalnum()):
       print (stripped_line, 'is alphanumeric')
    else:
       print (stripped_line, 'not alphanumeric')
file.close()

答案 1 :(得分:0)

修改

从您的原始帖子中,您希望将拉丁字符(即带有重音符号的字符)视为有效的字母数字输入。为此,您应该以unicode加载原始文件,并且在测试字母数字质量时,您应该将重音字母转换为普通字母。这样就可以了:

# -*- coding: utf-8 -*-
import unicodedata
import codecs

file = codecs.open('file.txt','rb', encoding="utf-8")
data = file.readlines()
for i in data:
    i = i.strip()
    converted_data = ''.join((c for c in unicodedata.normalize('NFD', i) if unicodedata.category(c) != 'Mn'))
    if (converted_data.isalnum()):
        print (i, 'is alphanumeric')
    else:
        print (i, 'not alphanumeric')
file.close()