我编写了一个阅读实验,其中的单词在屏幕上逐一显示。这些单词是从.txt文件(UTF-8)中提取的,包含分为音节的德语单词。音节之间的划分是通过' - '来完成的。所以.txt文件包含这样的单词:
zwei-ter Die-nerkünst-li-cheWürst-chen
该计划的目的是正确显示单词,所以没有' - ':
zweiterDienerkünstlicheWürstchen
当一个单词不包含Umlaut时,一切顺利,使用以下代码:
# Strip newlines and split into syllables
syllables = word.strip().split( '-' )
word = ''.join( syllables )
# Index for keeping track in which color to display the next syllable
color_index = 0
letter_count = 0
for syllable in syllables:
# Pad the syllable for spaces for every letter of the word that is not part of this syllable
# This ensures proper placement of the syllable on the screen
padded_syllable = ' ' * letter_count + syllable + ' ' * ( len( word ) - letter_count - len( syllable ) )
text = visual.TextStim(
win=window,
text=padded_syllable, font='Courier New', color=colors[color_index], colorSpace='rgb',
units='pix', pos=( 0, -234 ),height =68,
)
text.draw()
letter_count += len( syllable ))
但是,当一个字母包含一个变音符号时,单词部分之间的间距会出错,那么这个字母似乎算作两个。 然后“künst-li-che”显示为“künstliche”,它应该是“künstliche”。
有没有办法将Umlaut的一封信作为一个字母计算?
答案 0 :(得分:1)
如果您只是试图删除所有连字符(并且您所说的没有暗示您不是),那么您可以像这样删除它们:
<string>.replace('-','')
示例:
'zwei-ter Die-ner künst-li-che Würst-chen'.replace('-','')
'zweiter Diener künstliche Würstchen'
我也没有遇到您使用join
描述的问题>>> y = 'zwei-ter Die-ner künst-li-che Würst-chen'.split('-')
>>> y
['zwei', 'ter Die', 'ner künst', 'li', 'che Würst', 'chen']
>>> ''.join(y)
'zweiter Diener künstliche Würstchen'