我正在尝试使用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]指的是' ['在我的档案中
答案 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
函数并在将来出现令人困惑的错误......