You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码报错:positional argument follows keyword argument 解决方法

解决Python中positional argument follows keyword argument错误(NetworkX构建有向图场景)

嘿,我来帮你拆解下这个错误的根源和解决办法:

错误直接原因

你在调用pd.read_csv()时参数顺序出问题了!看报错的那行代码:

for d in pd.read_csv("politwi.csv",sep='\s+',"shift-jis", header=None, names=['A', 'B'], chunksize=10000,):

这里的"shift-jis"是用来指定文件编码的参数,但你没写对应的关键字encoding=,导致它变成了位置参数。而Python的语法规则是:位置参数不能放在关键字参数之后(sep='\s+'就是关键字参数),所以直接触发了SyntaxError。

完整修正步骤

除了编码参数的问题,你的代码还有几个小细节需要调整,我一起整理出来:

  • 补充pandas导入:你用到了pd.read_csv()但没导入pandas,得补上这行
  • 修正read_csv参数:给编码值加上encoding=关键字,让参数规则符合Python要求
  • 修正print语句:Python3里print是函数,必须加括号(你原来的print pos是Python2的写法)
  • 规范代码缩进:Python对缩进要求严格,循环体和函数调用要保证缩进正确

修正后的完整代码

import numpy as np
import pandas as pd  # 补充pandas导入
import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()
# 修正encoding参数的写法,确保参数顺序合规
for d in pd.read_csv("politwi.csv", sep='\s+', encoding="shift-jis", header=None, names=['A', 'B'], chunksize=10000):
    G.add_edges_from([tuple(x) for x in d.values])

# 修正print语句的语法
for e in G.edges():
    print(e)

pos = nx.spring_layout(G, scale=1)
nx.draw(G, pos, with_labels=True)
plt.savefig('this.png')
plt.show()

额外注意点

  • 确认你的politwi.csv确实是用空格分隔的(sep='\s+'),如果是逗号分隔,改成sep=','即可
  • encoding="shift-jis"是日文编码,如果你后续读取文件出现乱码,可以尝试换成encoding="utf-8"或者其他匹配文件实际编码的值

内容的提问来源于stack exchange,提问作者Seiya Namba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:55:19