从字符串python中获取一个元素

时间:2017-02-11 01:19:13

标签: python

我正在尝试使用line.strip()和line.split()从文件中获取一个元素,但这总是给我一个字符串列表,line.split()总是返回一个字符串吗?我怎样才能获得元素列表而不是元素列表'?

    myfile = open('myfile.txt','r')
    for line in myfile:
            line_strip = line.strip()
            myline = line_strip.split(' ')
    print(myline)

所以我的代码给了我['你好',' hi'] 我想从文件中找到一个列表,如[hello,hi]

    [2.856,9.678,6.001] 6 Mary
    [8.923,3.125,0.588] 7 Louis
    [7.122,9.023,4,421] 16 Ariel

所以当我尝试

    list = []
    list.append((mylist[0][0],mylist[0][1]))

我实际上想要一个列表= [(2.856,9.678),(8.923,3.123),(7.122,9.023)] 但似乎这个mylist [0] [0]指的是' ['在我的档案中

4 个答案:

答案 0 :(得分:1)

我认为你正在寻找这个

>>> print("[{}]".format(", ".join(data)))
[1, 2, 3]

要解决您的问题,不过

  

这总是给我一个字符串列表,

右。正如str.split()所做的那样。

  

line.split()总是返回一个字符串吗?

假设type(line) == str,则为no,它返回分割线中的字符串元素列表。

  

如何获取elements列表而不是'elements'列表?

您的“元素”是字符串。 '标记只是repr类型的Python str

例如......

print('4') # 4
print(repr('4')) # '4'

line = "1,2,3"
data = line.split(",")
print(data)  # ['1', '2', '3']

您可以根据需要转换为其他数据类型

print([float(x) for x in data]) # [1.0, 2.0, 3.0]

答案 1 :(得分:0)

my_string = 'hello'
my_list = list(my_string) # ['h', 'e', 'l', 'l', 'o']
my_new_string = ''.join(my_list) # 'hello'

答案 2 :(得分:0)

line.split()会返回列表字符串。

例如:

my_string = 'hello hi'
my_string.split(' ')等于['hello', 'hi']

要将字符串列表(例如['hello', 'hi])重新组合在一起,请使用加入

例如,' '.join(['hello', 'hi'])等于'hello hi'' '指定在您要加入的列表中的所有元素之间放置一个空格。

答案 3 :(得分:0)

对于您发布的内容,请使用正则表达式:

>>> s="[2.856,9.678,6.001] 6 Mary"
>>> import re
>>> [float(e) for e in re.search(r'\[([^\]]+)',s).group(1).split(',')]
[2.856, 9.678, 6.001]

对于您发布的所有行(这与文件类似),您可能会这样做:

>>> txt="""\
...     [2.856,9.678,6.001] 6 Mary
...     [8.923,3.125,0.588] 7 Louis
...     [7.122,9.023,4,421] 16 Ariel"""
>>> for line in txt.splitlines():
...    print [float(e) for e in re.search(r'\[([^\]]+)',line).group(1).split(',')]
... 
[2.856, 9.678, 6.001]
[8.923, 3.125, 0.588]
[7.122, 9.023, 4.0, 421.0]

您需要向其添加错误代码(例如,如果匹配失败),但这是您正在寻找的核心。

BTW:不要使用list作为变量名。您将覆盖list函数并在将来出现令人困惑的错误......