我有一个简单的问题:我想从文件x中获取一行的内容。我的文件x看起来像这样:
PointXY
[387.93852, 200.0]
PointXY
[200.0, 387.93852]
PointXY
[200.0, 387.93852]
PointXY
[200.0, 353.20889]
PointXY
[387.93852, 200.0]
PointXY
[200.0, 387.93852]
PointXY
[200.0, 300.0]
我在Python中的脚本如下所示:
h = open("x.gcode", "r")
searchlines = h.readlines()
file = ""
for i, line in enumerate(searchlines):
if "PointXY" in line:
P = searchlines[i+1]
print(P)
我希望P只是[200.0,100.0](例如)。它现在给了我[200.0,100.0] \ n'。如何在行中调整此项" P = searchlines [i + 1]"?
答案 0 :(得分:2)
您可以使用str.strip()
删除\n
for i, line in enumerate(searchlines):
if "PointXY" in line:
P = searchlines[i+1].strip()
print(P)
答案 1 :(得分:2)
您希望strip每行中的换行符,您可以使用strip
的{{1}}方法轻松完成:
当您在str
中获取数据时,请执行以下操作:
searchlines
要查看它实际已被删除,请检查searchlines[i+1].strip()
:
repr
您甚至可以在应用 print(repr(P))
之前和之后执行repr
打印,以查看调用该条带时发生的情况。
考虑到您拥有的文字结构,您希望将其设为列表,因此,您可以使用strip()
中的loads
来执行此操作:
json
答案 2 :(得分:0)
如果你想删除' \ n'使用这个
读取数据后
data = f.readlines()
data = map(str.strip, data)
但对于另一个你可以使用它是不必要的:
import ast
listdata = []
with open('lel.txt') as f:
data = f.readlines()
for x in data:
try:
if isinstance(ast.literal_eval(x), list):
listdata.append(eval(x))
except:
pass
然后获取列表数据:
print listdata
>>>[[387.93852, 200.0], [200.0, 387.93852], [200.0, 387.93852], [200.0, 353.20889], [387.93852, 200.0], [200.0, 387.93852], [200.0, 300.0]]
print listdata[0]
>>>[387.93852, 200.0]
print listdata [0][0]
>>>387.93852