Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以特定格式导入.txt数据_Python - Fatal编程技术网

Python 以特定格式导入.txt数据

Python 以特定格式导入.txt数据,python,Python,下面是一个数据示例 "TABITHA","OLLIE","JAIME","WINIFRED" 然后是一段正确读入的代码 with open("names.txt", 'rb') as f: data = [map(str, line.split(',')) for line in f] 但是,这会将其作为列表列表读入。该列表仅为一个“高”列表 e.g. [["TABITHA", "OLLIE", "JAIME", "WINIFRED"]] 因此可能只是一个列表,而不是列表列表。有没

下面是一个数据示例

"TABITHA","OLLIE","JAIME","WINIFRED"
然后是一段正确读入的代码

with open("names.txt", 'rb') as f:
    data = [map(str, line.split(',')) for line in f]
但是,这会将其作为列表列表读入。该列表仅为一个“高”列表

e.g. [["TABITHA", "OLLIE", "JAIME", "WINIFRED"]]
因此可能只是一个列表,而不是列表列表。有没有办法把它当作一个列表来读?学习之旅还在继续:-)

编辑

功能性“自己滚”,代码:

创建列表

['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED']
编辑

功能性“自己滚”,代码:

创建列表

['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED']
使用“含电池”(逗号分隔值)模块。尽管名称不同,它也可以为其他分隔符配置,并且还有许多其他选项

import csv
with open('names.txt','rb') as f:
    for line in csv.reader(f):
        print line
输出:

['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED']
使用“含电池”(逗号分隔值)模块。尽管名称不同,它也可以为其他分隔符配置,并且还有许多其他选项

import csv
with open('names.txt','rb') as f:
    for line in csv.reader(f):
        print line
输出:

['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED']

阅读此类内容的最佳方法是使用。这将正确处理引号中可能出现的嵌入逗号

阅读此类内容的最佳方法是使用。这将正确处理引号中可能出现的嵌入逗号

如果你想变得愚蠢而不使用CSV模块:

sum([line.split(", ") for line in f], [])
编辑:那么我的初始数据怎么了

>>> f
['TABITHA, OLLIE, JAIME, WINIFRED', 'Spam, Eggs, Dead Parrots']
>>> sum([line.split(", ") for line in f], [])
['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED', 'Spam', 'Eggs', 'Dead Parrots']
使用文件:

$ cat temp.csv
foo, bar, baz
spam, eggs, quux
$ python
>>> f = open("temp.csv")
>>> sum([line.split(", ") for line in f], [])
['foo', 'bar', 'baz\n', 'spam', 'eggs', 'quux\n']

(添加一个
映射(str.strip,…)
以消除尾随空白)

如果您想变得愚蠢而不使用CSV模块:

sum([line.split(", ") for line in f], [])
编辑:那么我的初始数据怎么了

>>> f
['TABITHA, OLLIE, JAIME, WINIFRED', 'Spam, Eggs, Dead Parrots']
>>> sum([line.split(", ") for line in f], [])
['TABITHA', 'OLLIE', 'JAIME', 'WINIFRED', 'Spam', 'Eggs', 'Dead Parrots']
使用文件:

$ cat temp.csv
foo, bar, baz
spam, eggs, quux
$ python
>>> f = open("temp.csv")
>>> sum([line.split(", ") for line in f], [])
['foo', 'bar', 'baz\n', 'spam', 'eggs', 'quux\n']


(添加一个
映射(str.strip,…)
以消除尾随空白)

好的,这样你就可以让csv工作了,这比我的更好:p。但我怎样才能把它变成一个列表,然后在我的模块中使用呢?现在您只需将其打印出来
就是列表。就用它吧。如果需要文件中的所有行,请使用
list(csv.reader(f))
而不是
for
循环,但即使只有一行,也会再次获得列表列表。使用
for
循环,您一次只能处理一行代码,而且只有一行代码。哇,我以前试过,但没有意识到它有这个功能。所以,只使用“with”和“for”实际上会将行作为一个完整的列表导入。我没有意识到这一点,因为没有明显的代码表明这一点。我的最后一个问题是——假设我不想打印“行”,我只想读入它,我应该在Python中使用什么类型的填充符。谢谢你!如果你知道这是唯一一行你可以写的
line=csv.reader(f).next()
而不是
for
。太棒了,如果将来我有多行的话,我会用什么填充物呢?我完全开始学习,所以我有1000000个问题:pOk,所以你的csv比我好:p。但我怎样才能把它变成一个列表,然后在我的模块中使用呢?现在您只需将其打印出来
就是列表。就用它吧。如果需要文件中的所有行,请使用
list(csv.reader(f))
而不是
for
循环,但即使只有一行,也会再次获得列表列表。使用
for
循环,您一次只能处理一行代码,而且只有一行代码。哇,我以前试过,但没有意识到它有这个功能。所以,只使用“with”和“for”实际上会将行作为一个完整的列表导入。我没有意识到这一点,因为没有明显的代码表明这一点。我的最后一个问题是——假设我不想打印“行”,我只想读入它,我应该在Python中使用什么类型的填充符。谢谢你!如果你知道这是唯一一行你可以写的
line=csv.reader(f).next()
而不是
for
。太棒了,如果将来我有多行的话,我会用什么填充物呢?我完全开始学习,所以我有1000000个问题:p@downvoter .. 此代码是功能性的,并且符合OP的规范。对于f:line中的行,open(“names.txt”,“rb”)为f:line=[w.replace(“,”),对于行中的w.split(“,”)]同样有效-无需剥离。谢谢,不是downvoter,但是如果数据在引号之间有逗号,这就不起作用了,这就是为什么最好使用csv之类的测试模块,而不是使用自己的模块。@MarkTolonen我同意使用csv模块(像您一样)是一种更好的方法,但考虑到数据示例(我没有看到引号之间有任何逗号)和所需的输出这是有效的-它生成与您的解决方案相同的输出。@BenLucato..没有
strip()
我将此作为最后一项:
'WINIFRED\r\n']
所以我认为
strip()是有效的
是必要的。我确实同意使用CSV模块通常是一种更好的方法。@downvoter..此代码功能齐全,符合OP的规范。对于f:line中的行,open(“names.txt”,“rb”)作为f:line=[w.replace(“,”),对于w in line.split(“,”)]同样有效-无需剥离。谢谢,不是downvoter,但是如果数据在引号之间有逗号,这就不起作用了,这就是为什么最好使用csv之类的测试模块,而不是使用自己的模块。@MarkTolonen我同意使用csv模块(像您一样)是一种更好的方法,但考虑到数据示例(我没有看到引号之间有任何逗号)和所需的输出这是有效的-它生成与您的解决方案相同的输出。@BenLucato..没有
strip()
我将此作为最后一项:
'WINIFRED\r\n']
所以我认为
strip()是有效的
是必要的。我确实同意使用CSV模块通常是一种更好的方法。当我运行它时,产生
['“TABITHA”、“OLLIE”、“JAIME”、“WINIFRED”\n']
。是的,这将从我的数据中读取总共约45000项,而应该只有约5000项字段
['“TABITHA”、“OLLIE”、“JAIME”、“WINIFRED”\n']
当我运行它时。是的,它读取一个总数