Python 拆分一个";。txt";文件
我有一个.txt文件中的数据,以逗号分隔列表的形式。例如:Python 拆分一个";。txt";文件,python,file,split,Python,File,Split,我有一个.txt文件中的数据,以逗号分隔列表的形式。例如: N12345678,B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D N12345678,B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D 我希望能够将其拆分,首先按行,然后按逗号,这样我就能够处理数据并验证它。我的代码中的所有行都变得“无效”,即使其中一些行应该是有效的,因为每行应该有26个字符。以下是我目前的代码: (filenam
N12345678,B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D
N12345678,B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D
我希望能够将其拆分,首先按行,然后按逗号,这样我就能够处理数据并验证它。我的代码中的所有行都变得“无效”,即使其中一些行应该是有效的,因为每行应该有26个字符。以下是我目前的代码:
(filename+".txt").split("\n")
(filename+".txt").split(",")
with open(filename+".txt") as f:
for line in f:
if len(line) != 26:
print ("invalid")
else:
print ("valid")
就我理解你的问题而言,你想要这个
with open(filename, 'r') as f:
for line in f:
if len(line.split(',')) !=26:
print("Invalid")
else:
print("Valid")
它所做的只是
- 打开文件
- 逐行读取文件
- 对于每一行,按
,
- 由于
返回一个列表,请检查列表的长度是否为26str.split()
- 如果长度为26,则视为有效;否则就不行了
- 据我所知,你想要这个
with open(filename, 'r') as f:
for line in f:
if len(line.split(',')) !=26:
print("Invalid")
else:
print("Valid")
它所做的只是
- 打开文件
- 逐行读取文件
- 对于每一行,按
,
- 由于
返回一个列表,请检查列表的长度是否为26str.split()
- 如果长度为26,则视为有效;否则就不行了
# These two lines add two strings together, returning a string
# then they split the string into pieces into a list
# because the /filename/ has no newlines in it, and probably no commas
# that changes nothing
# then the return value isn't saved anywhere, so it gets thrown away
(filename+".txt").split("\n")
(filename+".txt").split(",")
# This opens the file and reads from it line by line,
# which means "line" is a string of text for each line in the file.
with open(filename+".txt") as f:
for line in f:
# This checks if the line in the file is not the /number/ 26
# since the file contains /strings/ it never will be the number 26
if line != 26:
print ("invalid")
# so this is never hit
else:
print ("valid")
[编辑:即使在更新的代码中,行
也是整个文本“N12345678,B,A,D…”
,并且由于逗号的原因,len(行)将超过26个字符。]
您似乎更希望这样:完全删除代码的前两行,逐行阅读文件(这意味着您通常不必关心代码中的“\n”)。然后用逗号分隔每行
with open(filename+".txt") as f:
for line in f:
line_parts = line.split(",")
if len(line_parts) != 26:
print ("invalid")
else:
print ("valid")
# line_parts is now a list of strings
# ["N12345678" ,"B", "A", ...]
这一准则远远不能起作用;它在语法上是有效的Python,但并不意味着任何合理的东西
# These two lines add two strings together, returning a string
# then they split the string into pieces into a list
# because the /filename/ has no newlines in it, and probably no commas
# that changes nothing
# then the return value isn't saved anywhere, so it gets thrown away
(filename+".txt").split("\n")
(filename+".txt").split(",")
# This opens the file and reads from it line by line,
# which means "line" is a string of text for each line in the file.
with open(filename+".txt") as f:
for line in f:
# This checks if the line in the file is not the /number/ 26
# since the file contains /strings/ it never will be the number 26
if line != 26:
print ("invalid")
# so this is never hit
else:
print ("valid")
[编辑:即使在更新的代码中,行
也是整个文本“N12345678,B,A,D…”
,并且由于逗号的原因,len(行)将超过26个字符。]
您似乎更希望这样:完全删除代码的前两行,逐行阅读文件(这意味着您通常不必关心代码中的“\n”)。然后用逗号分隔每行
with open(filename+".txt") as f:
for line in f:
line_parts = line.split(",")
if len(line_parts) != 26:
print ("invalid")
else:
print ("valid")
# line_parts is now a list of strings
# ["N12345678" ,"B", "A", ...]
我认为更简单的方法是使用csv模块
import csv
with open("C:/text.csv") as input:
reader = csv.reader(input)
for row in reader:
if len(row) == 26:
print("Valid")
else:
print("Invalid")
我认为更简单的方法是使用csv模块
import csv
with open("C:/text.csv") as input:
reader = csv.reader(input)
for row in reader:
if len(row) == 26:
print("Valid")
else:
print("Invalid")
不应该是
len(line)!=26
?@JRodDynamite好的,对不起。刚刚修复了这个问题,但我仍然得到了所有的“无效”,一旦修复,“每行26个字符”对于您给出的示例来说没有意义。“N12345678”为9个字符。如果使用逗号拆分,则其他项目各为1个字符。你的意思是“每行26项”?不是应该是len(行)!=26
?@JRodDynamite好的,对不起。刚刚修复了这个问题,但我仍然得到了所有的“无效”,一旦修复,“每行26个字符”对于您给出的示例来说没有意义。“N12345678”为9个字符。如果使用逗号拆分,则其他项目各为1个字符。你是说“每行26个项目”吗?我想知道,两个相同的答案中的一个是如何被投赞成票的,另一个是如何被投反对票的。只是问一下。@JRodDynamite,你有什么意见吗?投票被否决的原因?我想知道,两个相同答案中的一个是如何被否决的。只是问一下。@JRodDynamite,你有什么意见吗?投否决票的原因?回答得好。解释最初方法的错误往往比解释正确的方法更有用。回答得好。解释最初方法的错误往往比解释正确方法的帮助大很多倍。