python - 在 Python 中将 .join 函数与列表一起使用时,如何防止第一个字符成为我要加入的变量?

标签 python

def convert_table(filename_in, filename_out):
  retlist = []
  with open(filename_in, 'r') as fd:
    for line in fd:
      split = line.split(";")
      for i in split:
        i = i.replace(",",";")
        retlist.append(i)
    s = ","
    s = s.join(retlist)
    print(s)
    with open(filename_out,'w') as fdnew:
      fdnew.write(s)
  return True

所以当我将此输出写入另一个文件时,所有新行都将以“,”开头,这样输出的两行是

,String,Categorical,Categorical,Int,Int,Int,Int,Float,Float,Int,Int,Int,Int,Float,Float,Float
,100% Bran,N,C,70,4,1,130,10,5,6,280,25,3,1,0.33,68.402973

如何去掉 String 和 100% 之前的逗号?

最佳答案

您正在从文件中读取数据,并将所有 数据放入一个 巨大的平面列表中。您读取的数据包括换行符,因此如果文件看起来像

1;2;3
a;b;c

然后你构建的列表看起来像

['1', '2', '3\n', 'a', 'b', 'c\n']

s.join(retlist) 结果为 '1,2,3\n,a,b,c\n',行后有一个逗号休息。


不是构建一个巨大的列表,而是每行构建一个列表并一次写一行将是解决问题的一种方法。

此外,您似乎想将所有分号都变成逗号,反之亦然。有比拆分/替换/合并更简单的方法。字符串有一个 translate 方法来用其他字符替换字符:

converted = s.translate(str.maketrans({',': ';', ';': ','}))

关于python - 在 Python 中将 .join 函数与列表一起使用时,如何防止第一个字符成为我要加入的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58514165/

相关文章:

python - 使用 python 在 XML 文件中编码表情符号

python - 访问应用工厂中定义的 Flask 扩展

python - Pandas GroupBy 单列并显示多列作为值计数

python - 为什么 episode 在 200 个时间步之后完成(Gym 环境 MountainCar)?

python - Keras建模: Do I need one-hot encoding and if so how?

python - Flask WTForms IntegerField

python - 检查字典中的键是原子操作吗?

python - 搜索具有嵌套值的树结构?

python - PyCharm自动更改脚本

python - sklearn 随机森林的训练和测试数据准确度得分相同