问题:
我必须浏览具有字符串行的文本文件,并确定每行是否为字母数字。如果该行是字母数字打印,例如“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()
我们可以看到第一行和第二行是字母数字,但程序不起作用?
答案 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()