Python的字母数字
问题描述:
问题:Python的字母数字
我必须要经过有串线的文本文件,并确定有关每一行,如果它是字母或没有。如果线路例如字母打印“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()
+1
是的,这正是我正在寻找的。每条线都必须被剥离,因为它在最后包含一个不是字母数字部分的空格。我做错了没有将剥离的变量存储到变量中。谢谢您的回答! –
答
编辑
从你原来的职位,你要正确对待拉丁字符(即那些有口音)作为有效的字母数字输入。为了做到这一点,你应该在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()
'数据= file.read()' –
尝试:'I = i.strip()'(因为字符串是_immutable_和他们的方法并不在他们的内部数据进行操作,但而是返回其他字符串)。并且,修理你的缩进。 – CristiFati
它是如何工作的?你是否收到错误?你是否得到意想不到的输出? – PrestonM