在Python中拆分连接字符串的正确而优雅的方法

Gia*_*ear 7 python split join list syntax-error

我有以下列表:

>>> poly
'C:\\04-las_clip_inside_area\\16x16grids_1pp_fsa.shp'
>>> record
1373155
Run Code Online (Sandbox Code Playgroud)

我想创造:

'C:\\04-las_clip_inside_area\\16x16grids_1pp_fsa_1373155.txt'
Run Code Online (Sandbox Code Playgroud)

我希望拆分以获得"C:\ 04-las_clip_inside_area\16x16grids_1pp_fsa16x16grids_1pp_fsa"部分.

我试过这个双码线解决方案:

mylist = [poly.split(".")[0], "_", record, ".txt"]
>>> mylist
['C:\\04-las_clip_inside_area\\16x16grids_1pp_fsa', '_', 1373155, '.txt']
Run Code Online (Sandbox Code Playgroud)

从这里开始,在Python join中读取示例,为什么是string.join(list)而不是list.join(string)?.

我发现这个解决方案联合,但我收到此错误消息:

>>> mylist.join("")
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
AttributeError: 'list' object has no attribute 'join'
Run Code Online (Sandbox Code Playgroud)

如果我使用:

>>> "".join(mylist)
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: sequence item 2: expected string, int found
Run Code Online (Sandbox Code Playgroud)

eum*_*iro 13

Python join:为什么是string.join(list)而不是list.join(string)?

所以有

"".join(mylist)
Run Code Online (Sandbox Code Playgroud)

代替

mylist.join("")
Run Code Online (Sandbox Code Playgroud)

这是你的错误.

要解决您的int/string问题,请将int转换为string:

mylist= [poly.split(".")[0],"_",str(record),".txt"]
Run Code Online (Sandbox Code Playgroud)

或直接写:

"{}_{}.txt".format(poly.split(".")[0], record)
Run Code Online (Sandbox Code Playgroud)


Pao*_*tti 6

>>> from os import path
>>>
>>> path.splitext(poly)
('C:\\04-las_clip_inside_area\\16x16grids_1pp_fsa', '.shp')
>>>
>>> filename, ext = path.splitext(poly)
>>> "{0}_{1}.txt".format(filename, record)
'C:\\04-las_clip_inside_area\\16x16grids_1pp_fsa_1373155.txt'
Run Code Online (Sandbox Code Playgroud)