Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 连接字符串跳过第一行_Python - Fatal编程技术网

Python 连接字符串跳过第一行

Python 连接字符串跳过第一行,python,Python,我的代码: f=open(keywords_file,"r") keywords=f.read().split("\n")[0:-1] f.close() os.remove(keywords_file) up.enter_keywords(",".join(keywords)) up.quit() 我的文件看起来像: Keyword Keyword2 Keyword3 keyword4 我注意到的问题是: 输入关键字join跳过第一行,因此我的最终结果: keyword2,keyword3

我的代码:

f=open(keywords_file,"r")
keywords=f.read().split("\n")[0:-1]
f.close()
os.remove(keywords_file)
up.enter_keywords(",".join(keywords))
up.quit()
我的文件看起来像:

Keyword
Keyword2
Keyword3
keyword4
我注意到的问题是:

输入关键字join跳过第一行,因此我的最终结果:

keyword2,keyword3,keyword4
我需要:

keyword,keyword2,keyword3,keyword4
我的代码有什么问题吗?

试试这个:

 with open(keywords_file, 'r') as f:
     keywords = ",".join(line.strip() for line in f)
试试这个:

 with open(keywords_file, 'r') as f:
     keywords = ",".join(line.strip() for line in f)

您在制作切片时忽略了它:

    keywords=f.read().split("\n")[0:-1]
相反,您应该只执行以下操作:

    keywords = [word for word in f]

您在制作切片时忽略了它:

    keywords=f.read().split("\n")[0:-1]
相反,您应该只执行以下操作:

    keywords = [word for word in f]

哦,这是一个很好的解决方案,我们会马上尝试,谢谢!我应该选择哪一个?你应该使用另一个解决方案,我的回答只是说明你的错误。@JoJoMe:再解释一下,切片中的第二个索引是独占的<代码>-1指的是最后一个元素,因此
[0:-1]
提供了除最后一个元素之外的所有元素的副本。只需省略索引即可获取所有内容,即
[0://code>或只
[:]
。在这种情况下,完全不需要制作副本,因为您没有使用
split
方法的原始结果。@JoJoMe:既然您不需要制作副本,您可以完全不进行切片,只编写
keywords=f.read().split(“\n”)
。你所得到的答案的其他变化也是值得考虑的。(特别是使用
with
语句来自动关闭文件。是
读取
,然后
拆分整个文件,还是立即用列表/生成器表达式逐行读取,这更像是一个尝试或优化的问题。)@JoJoMe:,如果保持第一种方法,则应使用
keywords=f.read().splitlines()
。我现在才想起,
split(“\n”)
如果最后一行以换行符结尾,则返回一个空字符串作为最后一个元素,因此
[0:-1]
片段实际上可能有意义。只需使用
splitlines()
,或逐行读取文件,即可避免该问题。哦,这也是一个很好的解决方案,我们会马上尝试的。谢谢!我应该选择哪一个?你应该使用另一个解决方案,我的回答只是说明你的错误。@JoJoMe:再解释一下,切片中的第二个索引是独占的<代码>-1
指的是最后一个元素,因此
[0:-1]
提供了除最后一个元素之外的所有元素的副本。只需省略索引即可获取所有内容,即
[0://code>或只
[:]
。在这种情况下,完全不需要制作副本,因为您没有使用
split
方法的原始结果。@JoJoMe:既然您不需要制作副本,您可以完全不进行切片,只编写
keywords=f.read().split(“\n”)
。你所得到的答案的其他变化也是值得考虑的。(特别是使用
with
语句来自动关闭文件。是
读取
,然后
拆分整个文件,还是立即用列表/生成器表达式逐行读取,这更像是一个尝试或优化的问题。)@JoJoMe:,如果保持第一种方法,则应使用
keywords=f.read().splitlines()
。我现在才想起,
split(“\n”)
如果最后一行以换行符结尾,则返回一个空字符串作为最后一个元素,因此
[0:-1]
片段实际上可能有意义。只需使用
splitlines()
,或逐行读取文件,即可避免该问题。我无法重现该问题。我无法重现该问题。