发布
社区首页 >问答首页 >阅读包含多个列表的文本文件,其中包含空格和逗号,列表中的元素之间存在逗号。

阅读包含多个列表的文本文件,其中包含空格和逗号,列表中的元素之间存在逗号。
EN

Stack Overflow用户
提问于 2022-06-29 03:32:14
回答 1查看 210关注 0票数 1

我有一个名为tropical.txt的文本文件,它有多个列表,每个列表由一个新行分隔。注意逗号是由空格包围的。

代码语言:javascript
代码运行次数:0
复制
 space here and space here
         | |
['papaya' , 'mangosteen' , 'banana']
[]
['coconut' , 'mango']
['mangosteen' , 'papaya']

我尝试了以下代码

代码语言:javascript
代码运行次数:0
复制
import pandas as pd

df = pd.read_csv('tropical.txt', sep='\n', header=None, engine = 'python')
df

这给了我

代码语言:javascript
代码运行次数:0
复制
ValueError: Specified \n as separator or delimiter. This forces the python engine which does not accept a line terminator. Hence it is not allowed to use the line terminator as separator.

如果我就这么做

代码语言:javascript
代码运行次数:0
复制
import pandas as pd

df = pd.read_csv('tropical.txt', header= None, engine = 'python')
df

输出不是我想要的

代码语言:javascript
代码运行次数:0
复制
         0           1             2
0   ['papaya'   'mangosteen'    'banana']
1   []               None        None
2   ['coconut'      'mango']     None
3   ['mangosteen'   'papaya']    None

我期待着

代码语言:javascript
代码运行次数:0
复制
                        0   
0   [papaya,mangosteen,banana]
1   []  
2   [coconut,mango] 
3   [mangosteen,papaya]

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-29 03:42:38

您可以使用read_csv,方法是指定行中不会出现的分隔符(例如,\0) (以便将每一行作为一个整体读取),并指定ast.literal_eval作为值的转换器:

代码语言:javascript
代码运行次数:0
复制
import ast

pd.read_csv('tropical.txt', header=None, sep='\0', names=['fruits'], converters={ 'fruits' : ast.literal_eval })

输出:

代码语言:javascript
代码运行次数:0
复制
                         fruits
0  [papaya, mangosteen, banana]
1                            []
2              [coconut, mango]
3          [mangosteen, papaya]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72795515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档