Python 字母数字

Python 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()

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

试试看是否有效 -

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()

编辑

根据您原来的 post,您希望将拉丁字符(即带有重音符号的字符)视为有效的字母数字输入。为此,您应该以 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()