如何将输入分隔的字符串转换为 Python 的数组?

How to convert string separate by enter to array with Python?

我是 Python 的新手。我想将字符串转换为数组。

我的字符串来自:

<Country>
     <number no="11" info="date">
          <detail name="a1" class="11a" />
               <string name="hello" />
               <string name="world" />
          </detail>
          <detail name="a2" class="1a2" />
               <string name="hello" />
               <string name="world" />
          </detail>
     </number>
<Country>

代码

XML = ET.parse(File)
for name in XML.findall('.//detail [@class="11a"]/'):
   detname = name.get('name')
   print(detname)

detname的输出是这样的:

hello
world

我的期望变成了["hello","world"]

我这样试过:

arr = detname.split()
print(arr)

我正在尝试像这样打印字符串的类型<class 'str'> <class 'str'>

它return这个:

['world']

它不包括 "hello"

如果像您在评论中写的那样用换行符分隔文本,您可以使用此方法:

string = "Hello\nWorld"
arr = string .split('\n')
print(arr)

更新:基于问题中关于如何生成字符串的更新:

for name in XML.findall('.//detail [@class="11a"]/'):
   detname = name.get('name')
   print(detname)

detname 基本上这里代表每次迭代中的个人名称,然后打印它们以便在新行中得到每个名称。

如果您的要求是创建一个包含这些名称的列表,则创建一个列表对象并将单独的名称附加到列表中,如下所示:

names = []
for name in XML.findall('.//detail [@class="11a"]/'):
   detname = name.get('name')
   names.append(detname)

print(names)

此外,它可以通过列表理解在一行中完成:

names = [name.get() for name in XML.findall('.//detail [@class="11a"]/')]
print(names)

您的字符串由换行符分隔。

使用splitlines()将它们分成列表:

string = "Hello\nWorld"
array = string.splitlines()
print(array)

试试这个:

string = "Hello\nWorld"
arr = string.splitlines()
print(arr)
for i in arr:
    print(type(i))