[英]Python – Convert string to list
我正在为自己的“云服务器”工作。 我有一个工具来列出服务器上的文件。
flist = os.listdir("C:/Server")
conn.send(bytes("str(flist), "UTF-8"))
这会向客户端发送一个列表,客户端将其转换为字符串。 (类似这样:['Arcer.exe','Launcher.exe','Document.txt'])现在我怎样才能将字符串转换回列表?
string = "[' Arcer.exe', 'Launcher.exe', 'Document.txt']"
list = []
list = string.convert #pseudo method
print(list[0]) #Arcer.exe
print(list[1]) #Launcher.exe
我建议使用json
模块。
要发送列表,您可以将str(flist)
更改为json.dumps(flist)
然后在另一端使用flist = json.loads(string)
重新加载列表
您可以使用ast
模块中的literal_eval
:
from ast import literal_eval
string = "[' Arcer.exe', 'Launcher.exe', 'Document.txt']"
newList = literal_eval(string)
print(newList)
输出:
[' Arcer.exe', 'Launcher.exe', 'Document.txt']
如果您不想使用ast
模块,另一种方法是从字符串中删除括号,然后将其拆分为每个逗号,
字符如下:
string = "[' Arcer.exe', 'Launcher.exe', 'Document.txt']"
newList = string[1:-1].replace("'","").split(",")
print(newList)
这将为您提供与上述相同的输出:
[' Arcer.exe', ' Launcher.exe', ' Document.txt']
首先, 永远不要命名变量list
或string
。 第一个是内置类的名称,第二个是标准库中的模块。
您应该避免使用Python变量的字符串表示,因为读取和写入它们不会有效。 但是,如果您没有其他选项,则可以使用ast.literal_eval
:
from ast import literal_eval
x = "[' Arcer.exe', 'Launcher.exe', 'Document.txt']"
y = literal_eval(x)
print(y, type(y))
[' Arcer.exe', 'Launcher.exe', 'Document.txt'] <class 'list'>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.