csv 数据以逗号结尾 | python |

csv data ending with comma at end | python |

我写了一个代码,但是代码的问题是

我无法确定如何从我获得的预期输出中删除最后一个结束命令逗号

代码:

import xml.etree.ElementTree as ET

xml_data='''
<job_details>
    <role>
        <name>Vikas</name>
        <salary>.95</salary>
        <job_description>Developer</job_description>
    </role>
    <role>
        <name>Dip</name>
        <salary>.95</salary>
        <job_description>Backend Developer</job_description>
    </role>
</job_details>
'''

get_root_element = ET.fromstring(xml_data)
cnt=0
for i in range(len(list(get_root_element))):
  for x in get_root_element[i]:
    print(x.text,end=",")
    cnt=cnt + 1
    if cnt == len(list(get_root_element[1])):
      break
  print()

预期输出:

Vikas,.95,Developer,
Dip,.95,Backend Developer,

您可以这样简化您的代码:

可以直接遍历get_root_Elements。 然后不使用 print(),而是使用每个项目的所有元素,并使用正确的分隔符 join。 也不需要跳出 for 循环,它会自行停止。 我将所有结果附加到列表 out,其中 2 个字符串由 ,

分隔
import xml.etree.ElementTree as ET

xml_data='''
<job_details>
    <role>
        <name>Vikas</name>
        <salary>.95</salary>
        <job_description>Developer</job_description>
    </role>
    <role>
        <name>Dip</name>
        <salary>.95</salary>
        <job_description>Backend Developer</job_description>
    </role>
</job_details>
'''

get_root_element = ET.fromstring(xml_data)

out = []
for item in get_root_element:
    res = ','.join(x.text for x in item)
    out.append(res)

print(out) 
['Vikas,.95,Developer', 'Dip,.95,Backend Developer']

正如我所说,您的代码有一些基本的“错误”。 for 循环会在遍历所有元素时自行停止。无需定义计数并检查计数何时等于迭代器的 len。如果您仍然想知道如何使用此 print 语句来管理它,您可以遍历除最后一个元素之外的所有元素并使用 end 语句打印它。最后一个单独打印,没有 end。不过,我不会推荐它。

for i in range(len(list(get_root_element))):
    for x in get_root_element[i][:-1]:
        print(x.text,end=",")
    print(get_root_element[i][-1].text)

Vikas,.95,Developer
Dip,.95,Backend Developer

正在编辑您的代码,这是一个建议的解决方案:

import xml.etree.ElementTree as ET

xml_data='''
<job_details>
    <role>
        <name>Vikas</name>
        <salary>.95</salary>
        <job_description>Developer</job_description>
    </role>
    <role>
        <name>Dip</name>
        <salary>.95</salary>
        <job_description>Backend Developer</job_description>
    </role>
</job_details>
'''

get_root_element = ET.fromstring(xml_data)

result = []
for i in range(len(list(get_root_element))):
    temp = []
    for x in get_root_element[i]:
        temp.append(x.text)
    temp_str = ','.join(temp)
    result.append(temp_str)

print(result)

输出

['Vikas,.95,Developer', 'Dip,.95,Backend Developer']

但我必须说@Rabinzel 有一个更简洁的解决方案!