在 Python 中切片列表时的奇怪行为
Weird Behavior When Slicing a List in Python
我在 pandas 中有一些数据要用于命名实体识别。数据样本如下
text
['Angie', '’s', 'is', 'my', 'favorite', 'but', 'the', 'prices', 'at', 'little', 'Tonys', 'are', 'better', '.']
tags
['B-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-ORG', 'I-ORG', 'O', 'O', 'O']
我运行sklearn.model_selection import train_test_split
上数据
# split data
train_texts, test_texts, train_tags, test_tags = train_test_split(dataset["text"].tolist(),
dataset["tags"].tolist(),
test_size=0.20,
random_state=15)
但是,当我尝试打印列表时,它给了我一些奇怪的行为,具体来说,它计算文本和标签周围的方括号 []
和引号 ''
作为测试的一部分和标签。例如,当我写
print(train_texts[0][0:9], train_tags[0][0:9], sep='\n')
output
['Angie',
['B-ORG',
我的问题是,为什么将括号和引号字符计为字符串的一部分?我该如何解决?
尝试:
text
Angie ’s is my favorite but the prices at little Tonys are better.
tags
B-ORG I-ORG O O O O O O O B-ORG I-ORG O O O
您似乎在尝试将格式化为看起来像列表的字符串转换为列表。它不知道更好,所以括号和撇号顺其自然。
我已经使用DataFrame
进行声明,并执行了拆分train_texts and test_texts
和train_tags and test_tags
的相同任务。请参考下面的解决方案。然后我们将继续处理您的场景中 []
和 ''
的问题。
# Import all the important libraries
import pandas as pd
from sklearn.model_selection import train_test_split
# Store all String data into the 'data' variable
data = {
'text' : ['Angie', '’s', 'is', 'my', 'favorite', 'but', 'the', 'prices', 'at', 'little', 'Tonys', 'are', 'better', '.'],
'tags' : ['B-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-ORG', 'I-ORG', 'O', 'O', 'O']}
# Store above Initialized Data into DataFrame
dataset = pd.DataFrame(data)
注意:- 在继续之前总是打印 dataset
的几条记录。因为有时您的 dataset
可能会出现问题,这可能会偏离您的预期结果。
# Print a few records of 'dataset'
dataset
text tags
0 Angie B-ORG
1 ’s I-ORG
2 is O
3 my O
4 favorite O
5 but O
6 the O
7 prices O
8 at O
9 little B-ORG
10 Tonys I-ORG
11 are O
12 better O
13 . O
现在我们可以继续拆分部分了。我使用了你问题部分提到的相同方法。
# split data
train_texts, test_texts, train_tags, test_tags = train_test_split(
dataset["text"].tolist(),
dataset["tags"].tolist(),
test_size=0.20,
random_state=15)
因此,在拆分之后我们可以打印 train_texts and train_tags
的切片列表
print(train_texts[0][0:9], train_tags[0][0:9], sep='\n')
上面单元格的Output
如下:-
favorite
O
如您所见,它没有在输出中打印任何 []
和 ''
。
您的问题:-
Q.) 为什么将括号和引号字符计为字符串的一部分?我该如何解决?
A.) 我不知道这个问题背后的正确原因。但如果您的数据未正确声明或由于任何其他声明问题,有时可能会发生这种情况。但是在继续之前打印 dataset
是一个很好的做法。因为您可以通过这种方法识别数据的行为。
解决方案:- DataFrame
的使用非常适合我。你可以用那个。
希望此解决方案对您有所帮助。如果您仍然遇到问题,请上传完整代码。因此,我们可以找到相应的解决方案。
我在 pandas 中有一些数据要用于命名实体识别。数据样本如下
text
['Angie', '’s', 'is', 'my', 'favorite', 'but', 'the', 'prices', 'at', 'little', 'Tonys', 'are', 'better', '.']
tags
['B-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-ORG', 'I-ORG', 'O', 'O', 'O']
我运行sklearn.model_selection import train_test_split
上数据
# split data
train_texts, test_texts, train_tags, test_tags = train_test_split(dataset["text"].tolist(),
dataset["tags"].tolist(),
test_size=0.20,
random_state=15)
但是,当我尝试打印列表时,它给了我一些奇怪的行为,具体来说,它计算文本和标签周围的方括号 []
和引号 ''
作为测试的一部分和标签。例如,当我写
print(train_texts[0][0:9], train_tags[0][0:9], sep='\n')
output
['Angie',
['B-ORG',
我的问题是,为什么将括号和引号字符计为字符串的一部分?我该如何解决?
尝试:
text
Angie ’s is my favorite but the prices at little Tonys are better.
tags
B-ORG I-ORG O O O O O O O B-ORG I-ORG O O O
您似乎在尝试将格式化为看起来像列表的字符串转换为列表。它不知道更好,所以括号和撇号顺其自然。
我已经使用DataFrame
进行声明,并执行了拆分train_texts and test_texts
和train_tags and test_tags
的相同任务。请参考下面的解决方案。然后我们将继续处理您的场景中 []
和 ''
的问题。
# Import all the important libraries
import pandas as pd
from sklearn.model_selection import train_test_split
# Store all String data into the 'data' variable
data = {
'text' : ['Angie', '’s', 'is', 'my', 'favorite', 'but', 'the', 'prices', 'at', 'little', 'Tonys', 'are', 'better', '.'],
'tags' : ['B-ORG', 'I-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-ORG', 'I-ORG', 'O', 'O', 'O']}
# Store above Initialized Data into DataFrame
dataset = pd.DataFrame(data)
注意:- 在继续之前总是打印 dataset
的几条记录。因为有时您的 dataset
可能会出现问题,这可能会偏离您的预期结果。
# Print a few records of 'dataset'
dataset
text tags
0 Angie B-ORG
1 ’s I-ORG
2 is O
3 my O
4 favorite O
5 but O
6 the O
7 prices O
8 at O
9 little B-ORG
10 Tonys I-ORG
11 are O
12 better O
13 . O
现在我们可以继续拆分部分了。我使用了你问题部分提到的相同方法。
# split data
train_texts, test_texts, train_tags, test_tags = train_test_split(
dataset["text"].tolist(),
dataset["tags"].tolist(),
test_size=0.20,
random_state=15)
因此,在拆分之后我们可以打印 train_texts and train_tags
print(train_texts[0][0:9], train_tags[0][0:9], sep='\n')
上面单元格的Output
如下:-
favorite
O
如您所见,它没有在输出中打印任何 []
和 ''
。
您的问题:-
Q.) 为什么将括号和引号字符计为字符串的一部分?我该如何解决?
A.) 我不知道这个问题背后的正确原因。但如果您的数据未正确声明或由于任何其他声明问题,有时可能会发生这种情况。但是在继续之前打印 dataset
是一个很好的做法。因为您可以通过这种方法识别数据的行为。
解决方案:- DataFrame
的使用非常适合我。你可以用那个。
希望此解决方案对您有所帮助。如果您仍然遇到问题,请上传完整代码。因此,我们可以找到相应的解决方案。